国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Home Web Front-end CSS Tutorial Migrating the VSCode theme generator to oklch

Migrating the VSCode theme generator to oklch

Dec 29, 2024 am 02:25 AM

Migrating the VSCode theme generator to oklch

TLDR: VSCode Themes Community now uses the OKLCH colorspace in the matching colors generation algorithm to randomize and manipulate colors and also has a oklch color picker to be used when adjusting the generated theme colors.

You can sneak a peek at VSCODE Themes Community or dive straight into the code in the GitHub repository.


The late discovery

I know, oklch colorspace is not that new, but when I started to develop the VSCode Themes Community I was totally unaware of its existence. It was only a couple of weeks ago I found out about it and started to read a lot of articles regarding it and became aware of all the benefits that could come along with a color space migration in both the algorithm and the app itself.

In the oklch colorspace the color is represented by

  • L for perceptual lightness.
  • C for chroma representing chromatic intensity, with values from 0 (achromatic) with no upper limit, but in practice it does not exceed 0.5; CSS treats 0.4 as 100%.
  • H for hue angle in a color wheel, typically denoted in decimal degrees.

The perceptual lightness not only enables the easy selection of colors with uniform lightness for different hues but also allows manipulation of colors lightness and chroma without any change in the hue parameter, which is perfect to be used with the colors generation algorithm.

After the algorithm generates a set of hues using the selected base hue and color scheme/sacred geometry pattern, the colors for the theme are randomly generated based on these hues with variations of lightness and chroma.

By adopting the oklch color space it would be possible to keep the all derived hues from the selected color scheme intact even after all manipulation of lightness and chroma needed to ensure minimum contrast between the background colors and the ones used as foreground.

Even after, when there is the need or will to change any of the colors, using the new oklch color picker it is possible not only to adjust the chroma and lightness without changing the hue, but one can change the hue while keeping the perceptual lightness of the selected color unchanged.

After all that said I had only one choice, migrate the app.

The code migration

Reading some articles regarding the css colorspace specification I learned about the Culori, a very complete and precise color manipulation library for typescript that implements the oklch colorspace.

It was not hard to change all the functions and methods that were using an old color manipulation library. Some parts of the algorithm even got cleaner and easier to maintain and understand.

After the code migration, I started looking for a color picker component but couldn’t find any that could suit my app’s requirements, it needed to use Svelte 5, have the option to use oklch color space and integrate well with the current ui that is based on shadcn-svelte components.

In the middle of the frustration, I've encountered this great work from EvilMartians at oklch.com which is open source and, at least for me, very complex.
After some hours spent at their GitHub repository and looking at the color picker on their web page I decided to give it a try, develop my own implementation using Svelte 5 and shadcn-svelte components.

I did not went all in developing a reusable component, but now I'm thinking about making a Svelte 5 package out of it. But I digress, back to my adventure I customized some sliders backgrounds to dynamically update as the L, C, H and Alpha options changes.

Implemented a web worker to calculate the pixel colors for the dynamic 2D maps for each slider, with the help of Culori it was not hard to generate gradients to accurately represent the complex oklch color space.

And there it was…a functional oklch color picker that could fulfill the needs of my current stack.

As I already was with my hands dirty, I went to talk to my invaluable friend Claude 3.5 to ask if he had a few more sacred geometry patterns that could be used as color schemes to add to the, already long, list of patterns/schemes. This time Claude did not measured the efforts and 'spited' more than a hundred new sacred geometry, modern quantum physics and some other mathematical equations that could be integrated as patterns/color schemes in the algorithm.

The result

It is live at VSCode Themes Community and you can check out the code in the Github repository.

Please, as always, feel free to provide any kind of feedback and/or suggestion in the comments or file an issue at the repository. I would be very happy to hear your thoughts.

Thanks a lot for the reading and, hopefully, I see you in the next one!

The above is the detailed content of Migrating the VSCode theme generator to oklch. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How can I include CSS only on some pages? How can I include CSS only on some pages? Jun 11, 2025 am 12:01 AM

There are three ways to selectively include CSS on a specific page: 1. Inline CSS, suitable for pages that are not frequently accessed or require unique styles; 2. Load external CSS files using JavaScript conditions, suitable for situations where flexibility is required; 3. Containment on the server side, suitable for scenarios using server-side languages. This approach can optimize website performance and maintainability, but requires balance of modularity and performance.

Flexbox vs Grid: Understanding the Key Differences in CSS Layout Flexbox vs Grid: Understanding the Key Differences in CSS Layout Jun 10, 2025 am 12:03 AM

Flexboxisidealforone-dimensionallayouts,whileGridsuitstwo-dimensional,complexlayouts.UseFlexboxforaligningitemsinasingleaxisandGridforprecisecontroloverrowsandcolumnsinintricatedesigns.

Creating an Auto-Closing Notification With an HTML Popover Creating an Auto-Closing Notification With an HTML Popover Jun 10, 2025 am 09:45 AM

The HTML popover attribute transforms elements into top-layer elements that can be opened and closed with a button or JavaScript. Popovers can be dismissed a number of ways, but there is no option to auto-close them. Preethi has a technique you can u

What is 'render-blocking CSS'? What is 'render-blocking CSS'? Jun 24, 2025 am 12:42 AM

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

How to use Lotties in Figma How to use Lotties in Figma Jun 14, 2025 am 10:17 AM

In the following tutorial, I will show you how to create Lottie animations in Figma. We'll use two colorful designs to exmplify how you can animate in Figma, and then I'll show you how to go from Figma to Lottie animations. All you need is a free Fig

Breaking Boundaries: Building a Tangram Puzzle With (S)CSS Breaking Boundaries: Building a Tangram Puzzle With (S)CSS Jun 13, 2025 am 11:33 AM

We put it to the test and it turns out Sass can replace JavaScript, at least when it comes to low-level logic and puzzle behavior. With nothing but maps, mixins, functions, and a whole lot of math, we managed to bring our Tangram puzzle to life, no J

External vs. Internal CSS: What's the Best Approach? External vs. Internal CSS: What's the Best Approach? Jun 20, 2025 am 12:45 AM

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

Does my CSS must be on lower case? Does my CSS must be on lower case? Jun 19, 2025 am 12:29 AM

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.

See all articles