CSSトークン抽出
CSS Token Extractor
スタイルシートから色・余白・角丸・書体の値を拾い出し、カスタムプロパティの一式を提案します。
スタイルシートを読んで、その中の色・長さ・角丸・書体・影をすべて数え上げ、それぞれに`--変数`を提案します。並び順は使われている回数です。そのうえで、それらを使う形にスタイルシートを書き換えられます。CSS整形ツールのトークナイザの上に作った宣言のスキャナであって、完全なパーサでもリンタでもありません。ファイルにどんな値が入っているかを教えてくれる道具で、そこが手作業ではつらい部分です。
CSS の入力
.css ファイルをここに
このタブの中だけで読みます。
トークンの提案
--app-color-1 のように前に付きます。
宣言
29
色
11
余白の値
5
角丸
3
フォント
1
もとからある変数
1
色 11
- #6366f1×2
- #fff×2
- #1f2937×1
- rgba(0,0,0,.06)×1
- rgba(0,0,0,.08)×1
- #111827×1
- #4b5563×1
- #4f46e5×1
- #eef2ff×1
- #4338ca×1
- #e5e7eb×1
余白 5
- 4px×1
- 8px×3
- 16px×4
- 24px×3
- 32px×1
角丸 3
- 8px×1
- 12px×1
- 999px×1
文字サイズ 3
- 12px×1
- 14px×2
- 20px×1
行の高さ 1
- 1.6×1
フォント 1
- "Pretendard", system-ui, sans-serif×1
影 2
- 0 1px 2px rgba(0,0,0,.06)×1
- 0 8px 24px rgba(0,0,0,.08)×1
ファイルをどう読んでいるか
- · CSS 整形ツールのトークナイザーで読むので、
url()も、文字列の中の#fffも色として数えず、calc()はまるごと残します。 - · 色は 16 進数に正規化するので、#FFF・white・rgb(255 255 255) はひとつの項目にまとまり、使われた回数が付きます。名前は使用回数の多い順に番号を振るので、--color-1 はたいていブランド色か本文の色です。名前は自分で付け直してください。
- · 余白は margin・padding・gap と inset 系からだけ、角丸は border-radius からだけ拾い、大きさの順に番号を振ります。width と height は外してあります。リズムではなく寸法だからです。
- · JSON は W3C Design Tokens(DTCG)ドラフトの形で、$type と $value が付きます。「var() に書き換えた CSS」は値が完全に一致する場所だけを置き換え、ほかの文字は 1 文字も触りません。
使い方
スタイルシートを貼り付けるか、ファイルを置きます
一度に1ファイルです。最初に読み込まれる例は、自分のCSSを探しに行く前に出力の形を見せるためにあります。
トークンより先に件数を読みます
12色で済むはずのファイルに40色ある、というのが発見です。下のまとめた一覧は値ごとに出現回数を並べるので、名前を付ける価値のあるものが上に、1回しか出てこないもの、つまりたいていは書き間違いか死んだ規則が下に来ます。
プロジェクトに必要なら接頭辞を決めます
空なら`--color-1`、`app`と入れれば`--app-color-1`になります。どちらにしても数字は使用回数の順位であって意味ではないので、各値が何のためのものか分かった時点で付け直してください。
変数か、JSONか、書き換えたファイルを取ります
CSSの出力は先頭に貼る`:root`ブロックです。JSONはW3C Design Tokensのドラフトの形で、ビルド手順やデザインツール向けです。書き換えは、値が完全に一致した箇所だけを`var()`に差し替え、ほかには手を付けていない元のスタイルシートです。コミットする前に差分を読んでください。
よくある質問
書き換えたCSSはそのまま出して安全ですか。
まず差分を読んでください。置き換えはテキストの完全一致だけなので、認識できない値を壊すことはありません。ただし、同じ2つのグレーが別々の意味を持っていることも知りようがありません。たまたま同じ16進数だったボーダーの色と無効状態のラベルには同じ変数が付き、あとで誰かが片方だけを変えます。それを捕まえるのはトークンにきちんと名前を付ける段で、それは人の仕事です。
余白の一覧にwidthとheightが入っていないのはなぜですか。
意図的です。余白はリズムです。margin、padding、gap、insetのことで、デザインシステムはそれをトークン化します。widthとheightは寸法です。240pxのサイドバーと44pxのタップ領域は同じ尺度の上の2点ではありませんし、一覧に入れれば、本当に尺度の上にある値が埋もれます。
SCSSやLess、CSS-in-JSも扱えますか。
確実に扱えるのは素のCSSだけです。トークナイザはSCSSもかなりのところまで進みますが、ネスト、`@mixin`の中身、補間された値は解決されないので件数がずれます。先にコンパイルして、その出力をスキャンしてください。ブラウザが実際に見るのもそのファイルです。
URLの中の色まで拾っていませんか。
拾っていません。そこは処理されています。スキャンはCSS整形ツールのトークナイザの上で走るので、`url()`や文字列の中の`#fff`は文字列のままですし、`calc()`は長さに分解されず丸ごと残ります。正規表現で書くと間違えるのがこの2か所です。
ここから渡せます
CSS整形・圧縮
CSS Beautifier & Minifier
並べ替えを一切せずにCSSを整形または圧縮し、トークンの並びをそのまま保ちます。
配色パレット生成
Palette Generator
基準の色から補色・三色配色・類似色の規則で調和のとれたパレットを組み立てます。
ダークモード配色
Dark Mode Palette
色ひとつから50〜950のランプを作り、それを反転させたダークのランプを組にして、対応するトークン同士のコントラストを保ちます。
近いTailwindカラー検索
Nearest Tailwind Colour
任意の色にいちばん近いTailwindパレットの値を探し、見た目の色差も示します。
次の一手
このツールが出したものをそのまま受け取れる道具です。
濃淡スケール生成
Tint & Shade Scale
色ひとつから見た目の間隔が均等な50〜950の明度スケールを作り、そのままデザイントークンに使えます。
CSS整形・圧縮
CSS Beautifier & Minifier
並べ替えを一切せずにCSSを整形または圧縮し、トークンの並びをそのまま保ちます。
ダークモード配色
Dark Mode Palette
色ひとつから50〜950のランプを作り、それを反転させたダークのランプを組にして、対応するトークン同士のコントラストを保ちます。
配色パレット生成
Palette Generator
基準の色から補色・三色配色・類似色の規則で調和のとれたパレットを組み立てます。
カラーコード変換
Colour Format Converter
HEX・RGB・HSL・HWB・LAB・LCH・OKLCHのあいだで色を変換し、いちばん近い色名も示します。
カラーピッカー
Colour Picker
OKLCHの色域から、画面のスポイトで、またはアップロードした画像から色を選び、好きな表記でコピーします。