@lism-css/mcp 0.24.0 → 0.27.0
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.
- package/dist/data/docs-index.json +279 -139
- package/dist/data/guides/SKILL.md +87 -114
- package/dist/data/guides/antipatterns-layout.md +39 -40
- package/dist/data/guides/antipatterns.md +16 -12
- package/dist/data/guides/base-styles.md +1 -1
- package/dist/data/guides/components-core.md +9 -8
- package/dist/data/guides/components-ui.md +82 -35
- package/dist/data/guides/css-rules.md +103 -97
- package/dist/data/guides/customize.md +12 -26
- package/dist/data/guides/naming.md +8 -24
- package/dist/data/guides/property-class/all-props.md +25 -23
- package/dist/data/guides/property-class/bd.md +4 -1
- package/dist/data/guides/property-class.md +2 -1
- package/dist/data/guides/references/authoring.md +40 -52
- package/dist/data/guides/references/page-sections.md +5 -5
- package/dist/data/guides/references/verification.md +6 -4
- package/dist/data/guides/responsive.md +4 -24
- package/dist/data/guides/set-class.md +1 -1
- package/dist/data/guides/tokens.md +44 -18
- package/dist/data/guides/trait-class/has--transition.md +17 -2
- package/dist/data/guides/trait-class.md +2 -13
- package/dist/data/meta.js +2 -2
- package/dist/lib/markdown-utils.d.ts +3 -22
- package/dist/lib/markdown-utils.js +7 -30
- package/dist/lib/search.d.ts +1 -4
- package/dist/lib/search.js +17 -36
- package/dist/tools/convert-css.js +8 -25
- package/dist/tools/get-guide.js +2 -2
- package/package.json +5 -5
|
@@ -1,52 +1,48 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lism-css-guide
|
|
3
|
-
description: 'Lism CSSでUIやページを実装・修正する時に使う実装ガイド。Primitive選定・トークン照合・Property Class/Lism Props
|
|
3
|
+
description: 'Lism CSSでUIやページを実装・修正する時に使う実装ガイド。Primitive選定・トークン照合・Property Class/Lism Props活用・レスポンシブ設計・アンチパターン照合を変更規模に応じて行う。b--*, c--*, l--*, a--*, is--*, has--*, set--*, u--*, -prop:value形式のクラスやトークンの逆引きにも使う。'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Lism CSS実装ガイド
|
|
6
|
+
# Lism CSS 実装ガイド
|
|
7
7
|
|
|
8
|
-
Lism CSSでUI
|
|
8
|
+
Lism CSSでUI・ページ・コンポーネントを実装する時の判断の起点。変更規模から実行レベルを判定し、実装前チェック→実装→提出前セルフチェックを通す。
|
|
9
9
|
|
|
10
10
|
公式ドキュメント: https://lism-css.com/docs/overview.md
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**バージョン:** `lism-css@0.27.0`/`@lism-css/ui@0.27.0`時点の情報。プロジェクトのバージョンが異なる場合はユーザーに伝え、パッケージ更新またはこのスキルの更新を案内する。
|
|
13
13
|
|
|
14
14
|
## 実装フロー(厳守)
|
|
15
15
|
|
|
16
16
|
資料確認は、コード上の操作の直前に行う。どの操作の手前で何を読むかは「資料確認トリガー」に従う。
|
|
17
17
|
|
|
18
|
-
0. **実行レベル判定**:
|
|
19
|
-
1. **初期確認**: SKILL.md
|
|
20
|
-
2.
|
|
21
|
-
3. 実装前チェック(C0–C8
|
|
18
|
+
0. **実行レベル判定**: 「事前チェック実行レベル」で不要/軽量/通常/値照合付きを決める。
|
|
19
|
+
1. **初期確認**: SKILL.mdだけで実装しない。実装対象に明らかに関係する最小限の詳細ファイルを先に開き、実装プランに「初期確認した資料」を列挙する。リンク表を眺めただけは確認済みにしない。
|
|
20
|
+
2. 「目的別実装ガイド」でPrimitive/コンポーネントの候補を選ぶ。
|
|
21
|
+
3. 実装前チェック(C0–C8)を行い、初期確認した資料・使うPrimitive・コンポーネント・トークン・レスポンシブ方針を列挙した**実装プラン**を出す。未読のまま採用できない判断は🔁を付け、「読む資料」を判断行に紐づける。
|
|
22
22
|
4. 「資料確認トリガー」に従い、各操作をコードに書く手前で対応資料を読み、🔁を✅または⏸へ解消する。
|
|
23
|
-
5. ⏸が残る項目(px
|
|
23
|
+
5. ⏸が残る項目(px丸め・任意色・挙動変更・公開クラス変更など)は、その部分を実装する前にユーザー確認する。確認が取れない場合は「判定記号」の⏸の項に従う。
|
|
24
24
|
6. 実装する。
|
|
25
|
-
7.
|
|
25
|
+
7. (通常・値照合付きのみ)「提出前セルフチェック」で実装プランと実装を照合する。
|
|
26
26
|
|
|
27
|
-
C0–C8
|
|
27
|
+
C0–C8の詳細と実装プランの書式は[`references/authoring.md`](./references/authoring.md)。
|
|
28
28
|
|
|
29
29
|
## 判定記号
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
実装プランの各行に付ける。使えるのは次の3記号と、✅への注記`✅新規`・`✅例外`・`✅前提`だけ。注記の組み合わせ(`✅例外/前提`等)や新しい記号・注記は作らない。該当する行は🔁として扱う。
|
|
32
32
|
|
|
33
33
|
| 記号 | 意味 |
|
|
34
34
|
| --- | --- |
|
|
35
|
-
| ✅ |
|
|
35
|
+
| ✅ | 確定。新規定義(コンポーネント/トークン/クラス)や合意済みの直書き例外は行内に注記する(例: `✅新規`、`✅例外(1px罫線)`) |
|
|
36
36
|
| 🔁 | 資料確認トリガーに該当する未通過項目。対応操作をコードに書く手前で指定資料を読み、✅または⏸へ解消する。🔁のまま実装しない |
|
|
37
37
|
| ⏸ | 要ユーザー確認。確認まで実装しない |
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
**`✅例外`の条件**: `antipatterns.md`の「直書きしてよい例外」に該当する場合だけ。行にはその項目の引用を添え、引用を書けない行は⏸。それ以外の例外化・丸め・新規トークンは⏸。許可リストに例外カテゴリを自作しない。「正確に再現して」等のユーザー指示や実測値であることは根拠にならない。デザイン値の既定の扱いは[`references/authoring.md`](./references/authoring.md)の「デザインデータ取り込みフロー」に従う。
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
**⏸の確認が取れない場合**(自律実行など): 原則準拠側の選択肢(すり合わせ済みの方針があればそれ、無ければ入力種別ごとの既定動作。例: 最寄りトークンへの丸め)を選び、その行を`✅前提(p="30"へ丸め)`のように更新して進め、完了報告で論点と代替案を列挙する。px直書き・例外カテゴリの新設・公開クラス変更・破壊的変更など逸脱側の選択肢は選べず、⏸のまま実装しない。
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
`lism-css-refactor`スキルは同じ記号を別の意味(✅=触らない、⬜=意図的に残す等)で使う。リファクタ時はrefactor側の定義に従い、どちらの意味かを表の見出し等で明示する。
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
## 実装プランのC一覧(実装前チェック項目)
|
|
48
|
-
|
|
49
|
-
このガイドでは、実装前に確認する項目を`C0`〜`C8`の番号で表します。`C`はCheck(確認)の略で、短く参照するためのラベルです。
|
|
45
|
+
## 実装前チェック項目(C0–C8)
|
|
50
46
|
|
|
51
47
|
| C | 見ること | 主な参照先 |
|
|
52
48
|
| --- | --- | --- |
|
|
@@ -56,24 +52,34 @@ C0–C8の詳細と出力形式は[`references/authoring.md`](./references/autho
|
|
|
56
52
|
| C3 | 命名設計 | `naming.md`、`css-rules.md` |
|
|
57
53
|
| C4 | 状態・バリエーション設計 | `trait-class.md`、`antipatterns-layout.md` |
|
|
58
54
|
| C5 | 値・トークン照合 | `tokens.md`、`property-class.md` |
|
|
59
|
-
| C6 | レスポンシブ方針 | `responsive.md`、`is--container.md` |
|
|
55
|
+
| C6 | レスポンシブ方針 | `responsive.md`、`trait-class/is--container.md` |
|
|
60
56
|
| C7 | CSSに書くもの/Propsに移すもの | `property-class.md`、`css-rules.md` |
|
|
61
57
|
| C8 | 既定値の確認 | `primitives/l--*.md` |
|
|
62
58
|
|
|
63
59
|
## 事前チェック実行レベル
|
|
64
60
|
|
|
65
|
-
| レベル | 条件 | 確認するC | 出力 |
|
|
66
|
-
| --- | --- | --- | --- |
|
|
67
|
-
| 不要 |
|
|
68
|
-
| 軽量 |
|
|
69
|
-
| 通常 |
|
|
70
|
-
| 値照合付き | Figma/スクショ等のデザイン再現 | 通常+C5/C7を詳しく確認 |
|
|
61
|
+
| レベル | 条件 | 確認するC | 出力 | 提出前セルフチェック |
|
|
62
|
+
| --- | --- | --- | --- | --- |
|
|
63
|
+
| 不要 | 説明のみ/コード変更なし/既存の書き方をなぞるだけの変更(下記の判定基準) | — | なし。手順6(実装)だけ行い、`.lism/`も作らない | 行わない |
|
|
64
|
+
| 軽量 | 数行の小変更・既存パターン内の変更・Props/Property Classだけで完結する小部品の追加 | C1・C5中心 | 3〜5行の箇条書き | 行わない |
|
|
65
|
+
| 通常 | 新規セクション、または新規CSS(`b--*`/`c--*`のスタイル宣言)を伴う新規部品 | 必須=初期確認した資料、C0、C1、C5、C6。該当時だけC2/C3/C4/C7/C8 | 項目別の表 | 実施し、`.lism/review.md`へ保存 |
|
|
66
|
+
| 値照合付き | Figma/スクショ等のデザイン再現 | 通常+C5/C7を詳しく確認 | 項目別の表+トークン差分表(差分列必須)。チャットではなく`.lism/plan.md`へ保存 | 実施し、`.lism/review.md`へ保存 |
|
|
67
|
+
|
|
68
|
+
`.lism/`の規約は[`references/verification.md`](./references/verification.md)。
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
「不要」の判定基準: 次のいずれも含まなければ「不要」。1つでも含めば「軽量」以上。
|
|
71
|
+
|
|
72
|
+
- 新規の`c--*`/`b--*`クラス
|
|
73
|
+
- 新規のCSS宣言(ファイル・`<style>`)
|
|
74
|
+
- 既存コードで使っていないPrimitive/Trait/コンポーネントの導入
|
|
75
|
+
- 新規のレスポンシブ切替
|
|
76
|
+
- トークン外の数値・色
|
|
77
|
+
|
|
78
|
+
不要/軽量/通常で迷っても上のレベルへ上げない。デザイン再現かどうかで迷う場合だけ「値照合付き」にする。通常でも該当しないCは省略し、表を形だけ埋めず実装に影響する項目だけ列挙する。
|
|
73
79
|
|
|
74
80
|
## 資料確認トリガー
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
左の操作をコードに書く手前で右の資料を読む。未読ならその判断は🔁にし、読んで✅にするか、判断できなければ⏸にする。**🔁のままコードへ反映しない。**「必要なら参照」で代替しない。
|
|
77
83
|
|
|
78
84
|
| この操作をする手前で | この資料を読む |
|
|
79
85
|
| --- | --- |
|
|
@@ -83,27 +89,26 @@ C0–C8の詳細と出力形式は[`references/authoring.md`](./references/autho
|
|
|
83
89
|
| hover/focus等の状態スタイルを書く | `property-class/hov.md`(必要に応じて`trait-class/has--transition.md`) |
|
|
84
90
|
| トークン外の数値・色をコードに書く(丸める場合を含む。CSS/Props問わず) | `tokens.md`、`antipatterns.md`の「px / 固定値の直書き」節 |
|
|
85
91
|
| レスポンシブの切替を決める | `responsive.md` |
|
|
86
|
-
|
|
|
87
|
-
| `c--*`のCSSを書く | `css-rules.md
|
|
92
|
+
| 独自クラス(`b--*`/`c--*`)を新しく作る/名前を付ける | `naming.md`、`css-rules.md`の`独自クラスの選び方(2分類)`節 |
|
|
93
|
+
| `b--*`/`c--*`のCSSを書く | `css-rules.md`の`Block Class(b--)`/`Custom Class(c--)`節 |
|
|
88
94
|
| 状態・バリエーションを設計する | `trait-class.md` |
|
|
89
95
|
|
|
90
|
-
「必要なら参照」などの曖昧な表現で代替しない。対象操作の直前に読む。
|
|
91
|
-
|
|
92
96
|
## 最小ゲート
|
|
93
97
|
|
|
94
|
-
|
|
98
|
+
常に守る。迷う・例外にする・既存実装と衝突する場合は該当資料を読み、🔁を✅または⏸へ解消する。
|
|
95
99
|
|
|
96
|
-
- 構造は`<div>`+素のCSSよりPrimitive
|
|
97
|
-
- `c
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
100
|
+
- 構造は`<div>`+素のCSSよりPrimitiveを優先する。候補は「目的別実装ガイド」から選ぶ。
|
|
101
|
+
- `c--*`/`b--*`はBlockをcamelCase、Elementを`_`ひとつ、Modifierを`--`ふたつで命名する。`c--feature-card`や`__`は使わない。
|
|
102
|
+
- 独自クラスは2分類で命名する: ベーススタイルをCSS側で管理する共通基礎部品→`b--`、それ以外→`c--`。
|
|
103
|
+
- 独自CSSは必ず`@layer lism-custom`内に置く(`b--`のベーススタイルだけ`@layer lism-block`)。
|
|
104
|
+
- トークン外のpx/rem/em値を勝手に丸めたり直書きしたりしない。丸め・新規トークン・直書き例外は⏸(`✅例外`の条件は「判定記号」)。
|
|
105
|
+
- `c--*`では、単一要素にだけ効く宣言はCSSに書かず、まずLism Props/Property Classで表せないか確認する。CSSに残すのは擬似要素・子孫セレクタ・状態切替などProperty Classで書けない宣言だけ。名前として残すのは本体クラス`c--name`だけで、CSSで参照しないElement(`c--name_elem`)は付けない。`b--*`のベーススタイルは対象外で、トークンを使って`@layer lism-block`に書いてよい(BP切替・hover・例外的な調整はProperty Class)。
|
|
106
|
+
- レスポンシブ値は、container query運用なら必要な`isContainer`祖先を確認する。
|
|
107
|
+
- 状態は`data-*`/ARIA、見た目バリエーションはBlockと同じプレフィックスのModifier(`c--name--variant`/`b--name--variant`)で表す。`is--active`のようにTrait Classを状態名に流用しない。
|
|
103
108
|
|
|
104
109
|
## 目的別実装ガイド
|
|
105
110
|
|
|
106
|
-
|
|
111
|
+
やりたいことから候補を引く。複数候補の行は括弧内の基準で使い分ける。
|
|
107
112
|
|
|
108
113
|
| やりたいこと | 使う候補 | 詳細 |
|
|
109
114
|
| --- | --- | --- |
|
|
@@ -113,106 +118,74 @@ C0–C8の詳細と出力形式は[`references/authoring.md`](./references/autho
|
|
|
113
118
|
| 幅制御 | `Container`(コンテナクエリ基準)/`Wrapper`(直下領域の幅制限)/`max-sz`(単体の幅) | `trait-class/is--container.md`、`trait-class/is--wrapper.md`、`property-class/max-sz.md` |
|
|
114
119
|
| 画像・動画・iframeを置く | `Frame`(アスペクト比枠・直下メディアのfit・overflowを任せる) | `primitives/l--frame.md` |
|
|
115
120
|
| ボタン | `@lism-css/ui`の`Button`。素の`<button>`を整えるならreset済みの`set--plain` | `components-ui.md`、`set-class.md` |
|
|
121
|
+
| ツールチップ・ポップオーバー | `@lism-css/ui`の`Tooltip`(ホバー/フォーカスの補足テキスト)/`Popover`(クリックで開くパネル。リンクやフォームを含むならこちら) | `components-ui.md` |
|
|
116
122
|
| hover効果 | `-hov:*`/`hov={{}}`/`set--hov`/`has--transition`(component CSSの`:hover`より先に検討) | `property-class/hov.md`、`trait-class/has--transition.md` |
|
|
117
123
|
| ボックス・カードの全体リンク | `BoxLink`/`is--boxLink`(クリック領域と重なり順を任せる) | `trait-class/is--boxLink.md` |
|
|
118
|
-
| 小さいUI部品 | `c--*`+Property Class(`c
|
|
124
|
+
| 小さいUI部品 | `c--*`+Property Class(`c--*`は何のパーツかを示す名前に留め、単一要素の見た目はProperty Class/Lism Propsへ)。ベーススタイルをCSS側で管理する共通部品なら`b--*` | `property-class.md`、`css-rules.md#custom-classc--`、`css-rules.md#block-classb--` |
|
|
119
125
|
| ページの定番セクション(ヒーロー・サイトヘッダー・フッター等) | `Group`+`Wrapper`/`Stack`/`Cluster`の定番構成 | `references/page-sections.md` |
|
|
120
126
|
|
|
121
127
|
## 提出前セルフチェック
|
|
122
128
|
|
|
123
|
-
|
|
129
|
+
通常・値照合付きレベルだけ行う。不要・軽量では、チャット内の簡易確認も評価サブエージェントへの委任もしない。
|
|
124
130
|
|
|
125
|
-
|
|
131
|
+
サブエージェント/タスク委任機能が使える環境では、この節の照合を実装した本人ではなく読み取り専用の評価サブエージェントに委任する(指示テンプレ・報告書式・再評価ループは[`references/verification.md`](./references/verification.md))。報告は`.lism/review.md`へ保存し、違反ゼロになるまで修正→再評価を繰り返してから提出し、完了報告で`.lism/review.md`を参照する。委任できない環境では、本人が同じ照合をこの節の順に行う。
|
|
132
|
+
|
|
133
|
+
まず実装プランと実装を1行ずつ照合し、差分を「計画変更(意図的)/実装漏れ(直す)/要確認(再び確認が必要)」に分類する。その後、次を確認する。
|
|
126
134
|
|
|
127
135
|
**プロセス照合**
|
|
128
136
|
|
|
129
|
-
-
|
|
130
|
-
-
|
|
137
|
+
- 実装プラン内の🔁が✅または⏸へ解消されているか。🔁のままコードに反映した判断がないか。
|
|
138
|
+
- 資料確認ログの各行が実装プランの判断項目と対応しているか。未読のまま採用したPrimitive/トークン/命名/レスポンシブ判断がないか。
|
|
131
139
|
|
|
132
140
|
**ルール照合**
|
|
133
141
|
|
|
134
142
|
- 「最小ゲート」の各項目に違反していないか。
|
|
135
143
|
- [`antipatterns.md`](./antipatterns.md)と[`antipatterns-layout.md`](./antipatterns-layout.md)のTOCを開き、実装コードに該当しうる項目を1つずつ照合する。リンク表を眺めただけは確認済みにしない。
|
|
136
144
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
実装プランの判定自体を再審査します。プラン段階で✅にした逸脱は実装との差分照合では検出できない(差分ゼロ=合格になってしまう)ため、差分照合とは別に行います。
|
|
145
|
+
**プラン再審査**(プラン段階で✅にした逸脱は差分照合では検出できないため、別に行う)
|
|
140
146
|
|
|
141
147
|
- `✅例外`を含む✅判定を、最小ゲート・`antipatterns.md`の「直書きしてよい例外」・すり合わせ済みの値マッピング方針に再照合する。許可リスト外の`✅例外`は⏸へ戻す。
|
|
142
|
-
-
|
|
143
|
-
-
|
|
148
|
+
- 値照合付きでは、`.lism/plan.md`にトークン差分表(差分列付き)があるか確認する。無ければ実装プランは無効。差分表を作って照合をやり直す。スケール前提(画像の書き出し倍率等)が実測・整合チェックで検証済みかも確認する(未検証なら差分表全体が無効)。
|
|
149
|
+
- 実行レベル判定が妥当だったか見直す(デザイン再現なのに「値照合付き」へ上げず、差分表を回避していないか)。
|
|
144
150
|
|
|
145
|
-
|
|
151
|
+
**個別確認**
|
|
146
152
|
|
|
147
153
|
- `@lism-css/ui`の既存コンポーネントで置き換えられないか。
|
|
148
154
|
- 同じProperty Classの組み合わせが3箇所以上ならコンポーネント化を検討したか。
|
|
149
155
|
- 既存の命名・レイヤー・ファイル配置に合っているか。
|
|
150
|
-
-
|
|
156
|
+
- 値照合付きでは、レンダリング結果の確認を完了報告の前提にする。確認できない環境では完了報告にユーザーへの目視確認依頼を含める。HTTPステータスやビルド成功だけで完了扱いにしない。
|
|
151
157
|
|
|
152
158
|
## 詳細リファレンス
|
|
153
159
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
173
|
-
| `references/
|
|
174
|
-
| `references/verification.md` | `.lism/`規約・評価サブエージェントへの委任 | プラン保存・提出前チェックの委任 |
|
|
175
|
-
| `references/page-sections.md` | ヒーロー・ヘッダー・フッター等の定番構成例 | ページセクションの実装 |
|
|
160
|
+
| ファイル | 内容・読む時 |
|
|
161
|
+
| --- | --- |
|
|
162
|
+
| `primitive-class.md` | `l--`/`a--` Primitive一覧と使い分け。レイアウト選定(必要なら`primitives/l--*.md`も) |
|
|
163
|
+
| `trait-class.md` | `is--`/`has--` Trait一覧と役割。状態・バリエーション設計 |
|
|
164
|
+
| `property-class.md` | `-{prop}:{value}`形式のProperty Class。CSSをProperty Class/Propsへ移せるか |
|
|
165
|
+
| `utility-class.md` | `u--*`ユーティリティ |
|
|
166
|
+
| `set-class.md` | `set--plain`/`set--hov`等のセットクラス。reset済みボタン等 |
|
|
167
|
+
| `tokens.md` | デザイントークンとCSS変数。余白・色・角丸・影・fzの照合 |
|
|
168
|
+
| `naming.md` | 命名規則とProperty Class省略ルール |
|
|
169
|
+
| `css-rules.md` | CSS設計・Layer構造・`b--*`/`c--*`・独自クラスの分類。カスタムCSS |
|
|
170
|
+
| `responsive.md` | BP・コンテナクエリ・レスポンシブProps |
|
|
171
|
+
| `base-styles.md` | Reset CSSとHTML要素の基本スタイル。素のHTML要素の既定を確認 |
|
|
172
|
+
| `components-core.md` | `lism-css`のReact/Astroコアコンポーネント |
|
|
173
|
+
| `components-ui.md` | `@lism-css/ui`のUIコンポーネント。UIコンポーネント置換 |
|
|
174
|
+
| `customize.md` | SCSS変数・`lism.config.js`によるカスタマイズ |
|
|
175
|
+
| `antipatterns.md` | AIが生成しがちなNG→OK(値・スタイル宣言系)。典型ミス確認 |
|
|
176
|
+
| `antipatterns-layout.md` | NG→OKの分冊(構造・レイアウト・レスポンシブ系) |
|
|
177
|
+
| `references/authoring.md` | 実装プランの作り方(C0–C8詳細・出力フォーマット) |
|
|
178
|
+
| `references/verification.md` | `.lism/`規約・評価サブエージェントへの委任 |
|
|
179
|
+
| `references/page-sections.md` | ヒーロー・ヘッダー・フッター等の定番構成例 |
|
|
176
180
|
|
|
177
181
|
## クラス単位の詳細リファレンス
|
|
178
182
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
- `l--box
|
|
182
|
-
- `
|
|
183
|
-
- `
|
|
184
|
-
- `l--cluster`/`<Cluster>`: `primitives/l--cluster.md`
|
|
185
|
-
- `l--grid`/`<Grid>`: `primitives/l--grid.md`
|
|
186
|
-
- `l--flow`/`<Flow>`: `primitives/l--flow.md`
|
|
187
|
-
- `l--center`/`<Center>`: `primitives/l--center.md`
|
|
188
|
-
- `l--frame`/`<Frame>`: `primitives/l--frame.md`
|
|
189
|
-
- `l--columns`/`<Columns>`: `primitives/l--columns.md`
|
|
190
|
-
- `l--tileGrid`/`<TileGrid>`: `primitives/l--tileGrid.md`
|
|
191
|
-
- `l--autoColumns`/`<AutoColumns>`: `primitives/l--autoColumns.md`
|
|
192
|
-
- `l--switchColumns`/`<SwitchColumns>`: `primitives/l--switchColumns.md`
|
|
193
|
-
- `l--withSide`/`<WithSide>`: `primitives/l--withSide.md`
|
|
194
|
-
|
|
195
|
-
**Trait Class**
|
|
196
|
-
|
|
197
|
-
- `is--container`/`<Container>`: `trait-class/is--container.md`
|
|
198
|
-
- `is--wrapper`/`<Wrapper>`: `trait-class/is--wrapper.md`
|
|
199
|
-
- `is--layer`/`<Layer>`: `trait-class/is--layer.md`
|
|
200
|
-
- `is--boxLink`/`<BoxLink>`: `trait-class/is--boxLink.md`
|
|
201
|
-
- `has--transition`: `trait-class/has--transition.md`
|
|
202
|
-
- `has--gutter`: `trait-class/has--gutter.md`
|
|
203
|
-
- `has--snap`: `trait-class/has--snap.md`
|
|
204
|
-
- `has--mask`: `trait-class/has--mask.md`
|
|
205
|
-
|
|
206
|
-
**Atomic Primitives/Property Class**
|
|
207
|
-
|
|
208
|
-
- `a--icon`/`<Icon>`: `primitives/a--icon.md`
|
|
209
|
-
- `a--divider`/`<Divider>`: `primitives/a--divider.md`
|
|
210
|
-
- `a--spacer`/`<Spacer>`: `primitives/a--spacer.md`
|
|
211
|
-
- `a--decorator`/`<Decorator>`: `primitives/a--decorator.md`
|
|
212
|
-
- `-bd`/`-bd-{side}`系: `property-class/bd.md`
|
|
213
|
-
- `-hov:*`系: `property-class/hov.md`
|
|
214
|
-
- `-max-sz:full`/`-max-sz:bleed`: `property-class/max-sz.md`
|
|
183
|
+
ファイル名はクラス名そのまま(`primitives/l--stack.md`等)。対応コンポーネント名は`components-core.md`。
|
|
184
|
+
|
|
185
|
+
- `primitives/`: `l--box` `l--flex` `l--stack` `l--cluster` `l--grid` `l--flow` `l--center` `l--frame` `l--columns` `l--tileGrid` `l--autoColumns` `l--switchColumns` `l--withSide` `a--icon` `a--divider` `a--spacer` `a--decorator`
|
|
186
|
+
- `trait-class/`: `is--container` `is--wrapper` `is--layer` `is--boxLink` `has--transition` `has--gutter` `has--snap` `has--mask`
|
|
187
|
+
- `property-class/`: `all-props.md`(全Prop表)、`bd.md`(`-bd`/`-bd-{side}`系)、`hov.md`(`-hov:*`系)、`max-sz.md`(`-max-sz:full`/`bleed`)
|
|
215
188
|
|
|
216
189
|
## このスキルファイル自身のアップデート方法
|
|
217
190
|
|
|
218
|
-
|
|
191
|
+
スキル更新の依頼には`lism-cli skill add`または`lism-cli skill update`を案内する。最新はGitHubリポジトリの`skills/lism-css-guide`で確認する。
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
## TOC
|
|
6
6
|
|
|
7
7
|
- [レイアウト選択ミス](#レイアウト選択ミス)
|
|
8
|
+
- [ベーススタイルを CSS 側で持つ部品を `c--` のままにする](#ベーススタイルを-css-側で持つ部品を-c---のままにする)
|
|
8
9
|
- [Astro/React Primitive を使わず素の HTML で組む](#astroreact-primitive-を使わず素の-html-で組む)
|
|
9
10
|
- [ボタン装飾を reset から自作する](#ボタン装飾を-reset-から自作する)
|
|
10
11
|
- [`Frame` 未使用のメディア枠手組み](#frame-未使用のメディア枠手組み)
|
|
@@ -17,8 +18,8 @@
|
|
|
17
18
|
- [レスポンシブ抜け](#レスポンシブ抜け)
|
|
18
19
|
- [レスポンシブ配列の冗長指定](#レスポンシブ配列の冗長指定)
|
|
19
20
|
- [`is--` の誤用(状態・バリエーション)](#is---の誤用状態バリエーション)
|
|
20
|
-
- [カスタムクラスを全て `c--` にしてしまう](#カスタムクラスを全て-c---にしてしまう)
|
|
21
21
|
- [クラス名の命名ミス](#クラス名の命名ミス)
|
|
22
|
+
- [CSS の無い Element クラスを付ける](#css-の無い-element-クラスを付ける)
|
|
22
23
|
|
|
23
24
|
---
|
|
24
25
|
|
|
@@ -46,6 +47,14 @@
|
|
|
46
47
|
| `<Grid gtc="1fr 240px">` で固定 | `<WithSide sideW="240px">` | コンテンツ幅で自動切替したいなら WithSide |
|
|
47
48
|
| `<Flex>` で 2 カラム強制横並び | `<WithSide>` | 縦並びへの切替が必要なら WithSide |
|
|
48
49
|
|
|
50
|
+
## ベーススタイルを CSS 側で持つ部品を `c--` のままにする
|
|
51
|
+
|
|
52
|
+
`c--` は「Lism 本体に含まれない、ユーザーが自由に定義するカスタムクラス(**Custom Class**)」を表すプレフィックスで、コンポーネント・サイトの領域(ヘッダーやサイドバーなど)・ページ固有要素など粒度を問わず使える(`c--siteHeader` のような骨格用途も可)。ただし、サイト共通で繰り返し使うボタン・バッジ・カード級の部品を、ベーススタイルごと CSS 側で管理したい場合は `c--` のままにせず `b--`(`@layer lism-block`)へリネームして昇格する。
|
|
53
|
+
|
|
54
|
+
→ 分類表と配置レイヤー: [css-rules.md の独自クラスの選び方(2分類)](./css-rules.md#独自クラスの選び方2分類)
|
|
55
|
+
|
|
56
|
+
ページ固有の要素も`c--`で命名し、ページslug等を含むcamelCase(`c--frontHero` 等)にすると名前だけで由来がわかる。
|
|
57
|
+
|
|
49
58
|
## Astro/React Primitive を使わず素の HTML で組む
|
|
50
59
|
|
|
51
60
|
Astro/Reactで実装しているのに、`lism-css/astro`や`lism-css/react`のPrimitiveをimportせず、素の`<div>`とCSSだけで構造を作るのは避ける。
|
|
@@ -89,24 +98,25 @@ Astro/Reactで実装しているのに、`lism-css/astro`や`lism-css/react`のP
|
|
|
89
98
|
|
|
90
99
|
## primitive 既定値の重複指定
|
|
91
100
|
|
|
92
|
-
Primitiveが既に持つCSSと同じ値を、Lism Props/Property Classで重ねない。既定の挙動は各`primitives/l--*.md
|
|
101
|
+
Primitiveが既に持つCSSと同じ値を、Lism Props/Property Classで重ねない。既定の挙動は各`primitives/l--*.md`の「既定の挙動」を確認する。セマンティックコンポーネントのデフォルト要素と同じ`as`も足さない。
|
|
93
102
|
|
|
94
103
|
| NG | OK | 理由 |
|
|
95
104
|
| --- | --- | --- |
|
|
96
105
|
| `<Cluster fxw="wrap" ai="center" g="15">` | `<Cluster g="15">` | `Cluster`は`flex-wrap:wrap`/`align-items:center`を既定で持つ。gapは既定ではないので残す |
|
|
97
106
|
| `<Frame ov="hidden" ar="16/9">` | `<Frame ar="16/9">` | `Frame`は`overflow:hidden`を既定で持つ |
|
|
98
107
|
| `<Frame><img className="-w:100% -h:100%" style={{ objectFit: 'cover' }} /></Frame>` | `<Frame><img /></Frame>` | 直下メディアの`width/height/object-fit:cover`は既定 |
|
|
108
|
+
| `<Text as="p">` / `<Inline as="span">` / `<Group as="div">` | `<Text>` / `<Inline>` / `<Group>` | `Text`/`Inline`/`Group`の既定要素は`p`/`span`/`div`(一覧は[components-core.md](./components-core.md#セマンティックコンポーネント)) |
|
|
99
109
|
|
|
100
110
|
プロジェクトCSSでPrimitive既定を上書きしている場合や、既定と違う意図的上書きの場合は例外として残す。
|
|
101
111
|
|
|
102
112
|
## サイト最外殻を `Wrapper` に使う
|
|
103
113
|
|
|
104
|
-
`Wrapper`/`is--wrapper`は幅制限したい直下領域に使う。サイト全体の最外殻やbody
|
|
114
|
+
`Wrapper`/`is--wrapper`は幅制限したい直下領域に使う。サイト全体の最外殻やbody直下の領域分けには使わない。最外殻は`c--siteWrapper`などの領域名クラスで扱い、幅制限が必要な内側だけ`Wrapper`にする。
|
|
105
115
|
|
|
106
116
|
| NG | OK | 理由 |
|
|
107
117
|
| --- | --- | --- |
|
|
108
|
-
| `<Wrapper className="c--site">...全体...</Wrapper>` | `<div className="
|
|
109
|
-
| `<main className="is--wrapper">`をページ全体に付与 | `<main className="
|
|
118
|
+
| `<Wrapper className="c--site">...全体...</Wrapper>` | `<div className="c--site"><Wrapper>...本文幅...</Wrapper></div>` | 最外殻と幅制限の責務を分ける |
|
|
119
|
+
| `<main className="is--wrapper">`をページ全体に付与 | `<main className="c--siteMain"><Wrapper>...</Wrapper></main>` | サイトの領域は領域名クラス、幅制限は`Wrapper` |
|
|
110
120
|
|
|
111
121
|
`Wrapper`直下の子要素には幅に関する既定が当たるため、最外殻に置くと予期しない幅制御を生むことがある。
|
|
112
122
|
|
|
@@ -157,33 +167,14 @@ Primitiveが既に持つCSSと同じ値を、Lism Props/Property Classで重ね
|
|
|
157
167
|
</Stack>
|
|
158
168
|
```
|
|
159
169
|
|
|
160
|
-
### BP 専用クラスをベース値なしで使う
|
|
161
|
-
|
|
162
|
-
BP 専用クラス(`-{prop}_{bp}`)やコンポーネントの BP キー(`{ sm: ... }` 等)だけを指定すると、BP 未満では値が空になり意図しないレイアウト崩れを起こす。必ずベース値とセットで指定する。
|
|
163
|
-
|
|
164
|
-
```jsx
|
|
165
|
-
// NG: sm 未満で p が未指定になる
|
|
166
|
-
<Box p={{ sm: 30 }}>...</Box>
|
|
167
|
-
|
|
168
|
-
// OK: ベース値(base / 配列の先頭)を必ず添える
|
|
169
|
-
<Box p={{ base: 20, sm: 30 }}>...</Box>
|
|
170
|
-
<Box p={[20, 30]}>...</Box>
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
生 HTML / クラス指定で書く場合も同様:
|
|
174
|
-
|
|
175
|
-
| NG | OK | 理由 |
|
|
176
|
-
| --- | --- | --- |
|
|
177
|
-
| `<div class="-p_sm" style="--p_sm: var(--s30)">` | `<div class="-p:20 -p_sm" style="--p_sm: var(--s30)">` | BP 未満では値が空になるため、ベースクラス `-{prop}:{value}` も必要 |
|
|
178
|
-
|
|
179
170
|
### ブレイクポイントの誤用
|
|
180
171
|
|
|
181
|
-
Lism CSS の標準出力で有効な BP は `sm: 480px` / `md: 800px` / `lg: 1120px`。`xs` は
|
|
172
|
+
Lism CSS の標準出力で有効な BP は `sm: 480px` / `md: 800px` / `lg: 1120px`。`xs` / `xl` は opt-in で既定では無効(有効化は [responsive.md](./responsive.md#ブレイクポイント) / customize.md)。
|
|
182
173
|
|
|
183
174
|
| NG | OK | 理由 |
|
|
184
175
|
| --- | --- | --- |
|
|
185
|
-
| `<Box p={{ xs: 10, sm: 20 }}>` | `<Box p={{ base: 10, sm: 20 }}>` |
|
|
186
|
-
| `cols={[1, 2, 3, 4, 5]}` | `cols={[1, 2, 3, 4]}` | 標準出力では `[base, sm, md, lg]` までが有効。`xl`
|
|
176
|
+
| `<Box p={{ xs: 10, sm: 20 }}>` | `<Box p={{ base: 10, sm: 20 }}>` | 最小サイズの値は `base` に置く。`xs` は既定で無効で、有効化しても「`xs` 以上」の意味なので `base` の代わりにならない |
|
|
177
|
+
| `cols={[1, 2, 3, 4, 5]}` | `cols={[1, 2, 3, 4]}` | 標準出力では `[base, sm, md, lg]` までが有効。`xl` は `lism.config.js` の `breakpoints` または SCSS 設定で有効化してから使う |
|
|
187
178
|
|
|
188
179
|
## レスポンシブ配列の冗長指定
|
|
189
180
|
|
|
@@ -221,25 +212,20 @@ Lism CSS の `is--` プレフィックスは「**〜である**」という**役
|
|
|
221
212
|
- `data-*` は HTML 標準の状態表現で、JS からの切替(`element.dataset.isActive = ''` / `delete element.dataset.isActive`)も自然
|
|
222
213
|
- ARIA 属性で意味が表せる場合(`aria-current` / `aria-disabled` / `aria-selected` 等)は ARIA を優先し、その属性自体を CSS セレクタにする
|
|
223
214
|
|
|
224
|
-
### 2. スタイルバリエーション → BEM Modifier `
|
|
215
|
+
### 2. スタイルバリエーション → BEM Modifier(`c--{name}--{variant}` / `b--{name}--{variant}`)
|
|
216
|
+
|
|
217
|
+
「同じコンポーネントの見た目違い」は、Lism CSS 公式の BEM Modifier 記法で表現する(→ [css-rules.md の独自クラスの選び方](./css-rules.md#独自クラスの選び方2分類))。
|
|
225
218
|
|
|
226
|
-
|
|
219
|
+
Modifier のプレフィックスは、その Block に付けたプレフィックスをそのまま維持する。`c--` の Block なら `c--{name}--{variant}`、`b--` の Block なら `b--{name}--{variant}` にし、`c--` と `b--` を混ぜない。
|
|
227
220
|
|
|
228
221
|
| NG | OK |
|
|
229
222
|
| --- | --- |
|
|
230
|
-
| `<
|
|
231
|
-
| `<
|
|
223
|
+
| `<section class="c--hero is--dark">` + `.c--hero.is--dark { ... }` | `<section class="c--hero c--hero--dark">` + `.c--hero.c--hero--dark { ... }` |
|
|
224
|
+
| `<div class="c--pricing is--featured">` | `<div class="c--pricing c--pricing--featured">` |
|
|
225
|
+
| `<button class="b--btn is--outline">` / `<button class="b--btn c--btn--outline">`(Block と違うプレフィックス) | `<button class="b--btn b--btn--outline">` + `@layer lism-block` に `.b--btn.b--btn--outline { ... }` |
|
|
232
226
|
|
|
233
227
|
なお、Modifier であってもまずは [Property Class で表現できないか](./antipatterns.md#property-class-で書けるのに-css-で書く) を検討すること。「色だけ違う」程度ならマークアップ側で `-bgc:* -c:*` を差し替えるだけで済むことも多い。
|
|
234
228
|
|
|
235
|
-
## カスタムクラスを全て `c--` にしてしまう
|
|
236
|
-
|
|
237
|
-
`c--` は「**コンポーネント**(再利用可能な UI 部品)」を表すプレフィックス。**カスタムクラスを必ず `c--` で命名する必要はない**。サイトの大まかな領域(header / sidebar / main / footer 等)やページ固有のスタイルなど、再利用が前提でないクラスは、独自プレフィックス(`z--` / `p--` 等)やプレフィックスなしの命名も選択肢として検討すること。
|
|
238
|
-
|
|
239
|
-
→ 使い分け表と配置レイヤー: [css-rules.md の独自プレフィックス](./css-rules.md#独自プレフィックス)
|
|
240
|
-
|
|
241
|
-
`c--header` のような命名も間違いとまでは言えないが、「カスタムクラス=必ず `c--`」ではないことに注意する。
|
|
242
|
-
|
|
243
229
|
## クラス名の命名ミス
|
|
244
230
|
|
|
245
231
|
Lism CSS では、プレフィックス(`c--` / `is--` / `has--` / `u--` / `set--` 等)に続く名称は **camelCase** で書くのが規約。kebab-case で書くと、BEM の Modifier 区切り(`--`)と視覚的に紛れて読みにくくなる。
|
|
@@ -250,7 +236,7 @@ Lism CSS では、プレフィックス(`c--` / `is--` / `has--` / `u--` / `se
|
|
|
250
236
|
| --- | --- | --- |
|
|
251
237
|
| `c--my-card` | `c--myCard` | プレフィックス後の名称は camelCase |
|
|
252
238
|
| `c--my-card--primary` | `c--myCard--primary` | Modifier 区切り `--` と単語区切り `-` が混在して読みにくい |
|
|
253
|
-
| `c--
|
|
239
|
+
| `c--pricing_my-elem` | `c--pricing_myElem` | Element 名(`_` 後)も camelCase |
|
|
254
240
|
| `is--side-bar` / `has--gutter-x` | `is--sideBar` / `has--gutterX` | `is--` / `has--` / `u--` 等にも同じ規則が適用される |
|
|
255
241
|
| `c--hero__inner` / `c--featureCard__title` | `c--hero_inner` / `c--featureCard_title` | Element 区切りは `_` ひとつ。BEM 風の `__` は使わない |
|
|
256
242
|
|
|
@@ -266,3 +252,16 @@ Lism CSS では、プレフィックス(`c--` / `is--` / `has--` / `u--` / `se
|
|
|
266
252
|
|
|
267
253
|
Modifierだけは`--`ふたつを使う: `c--featureCard--featured`。
|
|
268
254
|
|
|
255
|
+
## CSS の無い Element クラスを付ける
|
|
256
|
+
|
|
257
|
+
Element(`c--{name}_{element}`)を付けるのは、子孫セレクタ・擬似要素・状態切替など CSS でその子要素を参照する時だけ。何のパーツかを示す名前付けのためだけに残すのは本体クラス `c--{name}` で、子要素ごとに CSS の無い Element クラスを配らない。
|
|
258
|
+
|
|
259
|
+
→ 詳細: [css-rules.md](./css-rules.md#custom-classc--)
|
|
260
|
+
|
|
261
|
+
| NG | OK |
|
|
262
|
+
| --- | --- |
|
|
263
|
+
| `<Stack className="c--card"><Heading className="c--card_title" fz="l">…</Heading><Text className="c--card_text">…</Text></Stack>`(Element を参照する CSS なし) | `<Stack className="c--card"><Heading fz="l">…</Heading><Text>…</Text></Stack>` |
|
|
264
|
+
| `.c--card_title { font-size: var(--fz--l) }` + `<Heading className="c--card_title">` | `<Heading fz="l">`(宣言を Props へ移し、空になった Element も外す) |
|
|
265
|
+
|
|
266
|
+
`.c--card_text::before { … }` のように CSS で参照している Element は残す。
|
|
267
|
+
|
|
@@ -11,7 +11,7 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
|
|
|
11
11
|
- [px / 固定値の直書き](#px--固定値の直書き)
|
|
12
12
|
- [Property Class で書けるのに CSS で書く](#property-class-で書けるのに-css-で書く)
|
|
13
13
|
- [Token typo(存在しない値)](#token-typo存在しない値)
|
|
14
|
-
- [
|
|
14
|
+
- [独自クラスの CSS を所定の `@layer` に入れない](#独自クラスの-css-を所定の-layer-に入れない)
|
|
15
15
|
- [hover を component CSS に書いて負ける](#hover-を-component-css-に書いて負ける)
|
|
16
16
|
- [Reset 済みプロパティの再指定](#reset-済みプロパティの再指定)
|
|
17
17
|
- [`--keycolor` の誤用](#--keycolor-の誤用)
|
|
@@ -20,6 +20,7 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
|
|
|
20
20
|
### 構造・レイアウト・レスポンシブ系(antipatterns-layout.md)
|
|
21
21
|
|
|
22
22
|
- [レイアウト選択ミス](./antipatterns-layout.md#レイアウト選択ミス)
|
|
23
|
+
- [ベーススタイルを CSS 側で持つ部品を `c--` のままにする](./antipatterns-layout.md#ベーススタイルを-css-側で持つ部品を-c---のままにする)
|
|
23
24
|
- [Astro/React Primitive を使わず素の HTML で組む](./antipatterns-layout.md#astroreact-primitive-を使わず素の-html-で組む)
|
|
24
25
|
- [ボタン装飾を reset から自作する](./antipatterns-layout.md#ボタン装飾を-reset-から自作する)
|
|
25
26
|
- [`Frame` 未使用のメディア枠手組み](./antipatterns-layout.md#frame-未使用のメディア枠手組み)
|
|
@@ -32,8 +33,8 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
|
|
|
32
33
|
- [レスポンシブ抜け](./antipatterns-layout.md#レスポンシブ抜け)
|
|
33
34
|
- [レスポンシブ配列の冗長指定](./antipatterns-layout.md#レスポンシブ配列の冗長指定)
|
|
34
35
|
- [`is--` の誤用(状態・バリエーション)](./antipatterns-layout.md#is---の誤用状態バリエーション)
|
|
35
|
-
- [カスタムクラスを全て `c--` にしてしまう](./antipatterns-layout.md#カスタムクラスを全て-c---にしてしまう)
|
|
36
36
|
- [クラス名の命名ミス](./antipatterns-layout.md#クラス名の命名ミス)
|
|
37
|
+
- [CSS の無い Element クラスを付ける](./antipatterns-layout.md#css-の無い-element-クラスを付ける)
|
|
37
38
|
|
|
38
39
|
---
|
|
39
40
|
|
|
@@ -61,7 +62,7 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
|
|
|
61
62
|
| NG | OK | 理由 |
|
|
62
63
|
| --- | --- | --- |
|
|
63
64
|
| `font-size: 13px` を直書き | `font-size: var(--fz--xs)` または Props で `fz="xs"` | フォントサイズは調和数列スケール。固定値は避ける |
|
|
64
|
-
| `letter-spacing: 0.02 / 0.12 / 0.14 / 0.18 / 0.2 / 0.24em` を散在 | `--lts--s/-l/-xl` を使う、または独自の `--lts--*` を `global.css` で追加 | デフォルトの `lts` トークンは `s/l/xl` のみ。多種混在はデザイントークンとして不健全 |
|
|
65
|
+
| `letter-spacing: 0.02 / 0.12 / 0.14 / 0.18 / 0.2 / 0.24em` を散在 | `--lts--xs/-s/-l/-xl` を使う、または独自の `--lts--*` を `global.css` で追加 | デフォルトの `lts` トークンは `xs/s/l/xl` のみ。多種混在はデザイントークンとして不健全 |
|
|
65
66
|
|
|
66
67
|
### 実測pxの包括例外化(例外の自作)
|
|
67
68
|
|
|
@@ -90,7 +91,9 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
|
|
|
90
91
|
|
|
91
92
|
CSS に残すのは、基本的には `::before` / `> li` などの「Primitive / Trait / Property Class で書けないセレクタ」を伴う宣言。単一要素への装飾束は呼び出し側マークアップに移す。
|
|
92
93
|
|
|
93
|
-
なお、CSS
|
|
94
|
+
なお、CSS が空になっても本体クラス `c--{name}` は何のパーツかを示す名前としてマークアップに残して構わない(→ [css-rules.md の Custom Class](./css-rules.md#custom-classc--))。Element(`c--{name}_{element}`)は CSS で参照しなくなったら外す(→ [CSS の無い Element クラスを付ける](./antipatterns-layout.md#css-の無い-element-クラスを付ける))。
|
|
95
|
+
|
|
96
|
+
ベーススタイルを CSS 側で管理することを前提にする部品(サイト共通で繰り返し使うボタン・バッジ・カード級)は、`c--*` ではなく `b--*` を使い、CSS を `@layer lism-block` に書く(→ [css-rules.md の Block Class](./css-rules.md#block-classb--))。`b--` の3条件を満たさない `c--*` でこの節の規律を外してはいけない。
|
|
94
97
|
|
|
95
98
|
---
|
|
96
99
|
|
|
@@ -135,7 +138,7 @@ Lism CSS側が用意しているトークン値と異なるものを書かない
|
|
|
135
138
|
|
|
136
139
|
| NG | OK | 理由 |
|
|
137
140
|
| --- | --- | --- |
|
|
138
|
-
| `bdrs="sm"`, `bdrs="round"` | `bdrs="20"`, `bdrs="99"` | 角丸トークンは `10` / `20` / `30` / `40` / `99` / `inner` |
|
|
141
|
+
| `bdrs="sm"`, `bdrs="round"` | `bdrs="20"`, `bdrs="99"` | 角丸トークンは `10` / `20` / `30` / `40` / `50` / `99` / `inner` |
|
|
139
142
|
| `bxsh="xs"`, `bxsh="sm"` | `bxsh="10"`, `bxsh="20"` | shadowトークンは `10` / `20` / `30` / `40` / `50` |
|
|
140
143
|
|
|
141
144
|
### プリセット外の値を Lism Props に渡している
|
|
@@ -151,16 +154,17 @@ Lism Props では、props.ts で事前定義されたものが `-{prop}:{value}`
|
|
|
151
154
|
|
|
152
155
|
---
|
|
153
156
|
|
|
154
|
-
##
|
|
157
|
+
## 独自クラスの CSS を所定の `@layer` に入れない
|
|
155
158
|
|
|
156
|
-
`.c--*`のCSSは基本的に`@layer lism-
|
|
159
|
+
`.c--*`のCSSは基本的に`@layer lism-custom`内に置く(`b--`のベーススタイルだけ`@layer lism-block`)。Astroの`<style>`内でも同じ。Layer外に置くと、Lism内部レイヤーやProperty Classとの優先順位設計が崩れる。
|
|
157
160
|
|
|
158
161
|
| NG | OK |
|
|
159
162
|
| --- | --- |
|
|
160
|
-
| `.c--hero { padding: var(--s40); }` | `@layer lism-
|
|
161
|
-
| `<style>.c--
|
|
163
|
+
| `.c--hero { padding: var(--s40); }` | `@layer lism-custom { .c--hero::before { ... } }` |
|
|
164
|
+
| `<style>.c--pricing { ... }</style>` | `<style>@layer lism-custom { .c--pricing { ... } }</style>` |
|
|
165
|
+
| `@layer lism-custom { .b--btn { ... } }` | `@layer lism-block { .b--btn { ... } }` |
|
|
162
166
|
|
|
163
|
-
ただし、`padding`/`gap`/`font-size`/`color`などProps/Property Class
|
|
167
|
+
ただし、`c--*`のクラスでは、`padding`/`gap`/`font-size`/`color`などProps/Property Classへ移せる宣言を、Layerへ入れる前にマークアップ側へ移す(`b--`のベーススタイルは対象外で、`@layer lism-block`で CSS 側で管理してよい)。
|
|
164
168
|
また、詳細度の関係で`@layer`の外で書く必要がある場合は外に出してよい。
|
|
165
169
|
|
|
166
170
|
---
|
|
@@ -218,7 +222,7 @@ Lism CSSのreset/base styleで既に初期化されている値を、念のた
|
|
|
218
222
|
```html
|
|
219
223
|
<!-- u--cbox や c--callout など、ボックス全体の色味を局所的に切り替える -->
|
|
220
224
|
<div class="u--cbox" style="--keycolor: var(--red)">
|
|
221
|
-
<p class="-c
|
|
225
|
+
<p class="-c:keycolor">danger 用カラーリング</p>
|
|
222
226
|
</div>
|
|
223
227
|
```
|
|
224
228
|
|
|
@@ -253,5 +257,5 @@ Lism CSSのreset/base styleで既に初期化されている値を、念のた
|
|
|
253
257
|
|
|
254
258
|
| NG | OK | 理由 |
|
|
255
259
|
| --- | --- | --- |
|
|
256
|
-
| `<
|
|
260
|
+
| `<Box ta={['start', null, 'center']}>` | `<Box ta="center">` | `ta` / `fw` / `ov` などは BP 非対応。レスポンシブが必要なら SCSS 側で `bp: 1` を有効にするか、単一値にする |
|
|
257
261
|
|
|
@@ -39,7 +39,7 @@ Reset CSS に加え、`@layer lism-base` 内で HTML タグに基本スタイル
|
|
|
39
39
|
|
|
40
40
|
| 変数 | 用途 |
|
|
41
41
|
| --- | --- |
|
|
42
|
-
| `--hl` | half-leading(行間の上下余白量)。`line-height: calc(1em + var(--hl) * 2)`
|
|
42
|
+
| `--hl` | half-leading(行間の上下余白量)。`line-height: var(--lh, calc(1em + var(--hl) * 2))` として全要素に適用(`--lh` セット時はそちらが優先) |
|
|
43
43
|
|
|
44
44
|
### body
|
|
45
45
|
|