@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.
@@ -12,8 +12,8 @@
12
12
  詳細(公式ドキュメント):
13
13
 
14
14
  - 概要: [https://lism-css.com/docs/customize/](https://lism-css.com/docs/customize/)
15
- - CSSビルドの選択(`@layer` / `full.css` / `isFullMode`): [https://lism-css.com/docs/customize/build/](https://lism-css.com/docs/customize/build/)
16
- - `lism.config.js`(props / tokens / traits・breakpoints・追加スタイル): [https://lism-css.com/docs/customize/config/](https://lism-css.com/docs/customize/config/)
15
+ - CSSファイルの種類(`@layer` なし版 / `full.css`): [https://lism-css.com/docs/css-files/](https://lism-css.com/docs/css-files/)
16
+ - `lism.config.js`(props / tokens / traits・breakpoints・`isFullMode`・追加スタイル): [https://lism-css.com/docs/customize/config/](https://lism-css.com/docs/customize/config/)
17
17
  - SCSS(`$setting` / `$props`・BP上書き): [https://lism-css.com/docs/customize/scss/](https://lism-css.com/docs/customize/scss/)
18
18
  - CSS Purge: [https://lism-css.com/docs/customize/purge/](https://lism-css.com/docs/customize/purge/)
19
19
 
@@ -22,6 +22,7 @@
22
22
  ## `@layer` をオフにする
23
23
 
24
24
  `lism-css/main.css` の代わりに `lism-css/main_no_layer.css` を読み込むだけで、`@layer` を使わない CSS に切り替えられます。
25
+ no-layer版は既存サイトや WordPress テーマなど、カスケードを制御できない環境向けです。レイヤーの代わりに、Property Class は常に `!important` 付き、`u--trim` / `u--trimAll` / `u--cbox` / `u--divide` / `u--enclose` はセレクタ二重化(`.u--trim.u--trim` = 0-2-0)で出力され、「Property Class > Utility Class > 単一クラス」の序列を再現します。`lism.config.js` の `defaultImportant: false`・`$default_important: 0`・`props` の個別 `important: 0` を指定しても `!important` は外れません。`b--` など上記以外のクラス同士の優先度は読み込み順・詳細度に依存します。
25
26
 
26
27
  ```js
27
28
  // 通常
@@ -47,7 +48,7 @@ import 'lism-css/main_no_layer.css';
47
48
  | --- | --- | --- |
48
49
  | `$breakpoints` | ブレイクポイント数値の定義(`0` は無効=クエリを出力しない) | `('xs': 0, 'sm': '480px', 'md': '800px', 'lg': '1120px', 'xl': 0)` |
49
50
  | `$is_container_query` | コンテナクエリで出力するか(`1` = container query, `0` = media query) | `1` |
50
- | `$default_important` | Property Class にデフォルトで `!important` を付与するか | `0` |
51
+ | `$default_important` | Property Class にデフォルトで `!important` を付与するか(no-layer版では無視され、常に付与) | `0` |
51
52
  | `$props` | Property Class ごとの個別出力設定 | `prop-config` のデフォルト |
52
53
 
53
54
  ### 基本フォーマット
@@ -182,9 +183,9 @@ export default {
182
183
 
183
184
  これだけで、ブレイクポイント対応の全 Property Class が `xs` / `xl` のレスポンシブクラス(`-p_xs` / `-p_xl` 等)も出力するようになります。prop ごとの個別指定は不要です。
184
185
 
185
- 統合プラグイン(型自動生成が有効)を使っている場合、有効化したブレイクポイントを反映した `lism-env.d.ts` がプロジェクト直下に**自動生成**されます。型補完も有効化したブレイクポイントのキーを自動で提示するため、`BreakpointRegistry` をプロジェクト側の `.d.ts` で手書き拡張する必要はありません。`lism-env.d.ts` は git にコミットしてください(`astro check` 等の型チェックがこのファイルを拠り所にします)。
186
+ 統合プラグイン使用時は有効化したブレイクポイントがプロジェクト直下の `lism-env.d.ts` に自動反映され、`BreakpointRegistry` の手書き拡張は不要です。`lism-env.d.ts` は git にコミットしてください(`astro check` 等の型チェックがこのファイルを拠り所にします)。
186
187
 
187
- > SCSS を直接利用する構成では、`@use 'lism-css/scss/setting' with ($breakpoints: ...)` で有効化する方法も引き続き利用できます([SCSS でのカスタマイズ](#scss-でのカスタマイズ) を参照)。
188
+ > SCSS を直接利用する構成では、`@use 'lism-css/scss/setting' with ($breakpoints: ...)` で有効化する方法も利用できます([SCSS でのカスタマイズ](#scss-でのカスタマイズ) を参照)。
188
189
 
189
190
  ### フォーマット
190
191
 
@@ -256,31 +257,18 @@ export default {
256
257
 
257
258
  ### 追加した prop / trait の型解禁
258
259
 
259
- 統合プラグイン(型自動生成が有効)を使っている場合、`lism.config.js` で追加した **prop / trait も `lism-env.d.ts` 経由で型側に自動解禁**されます(`CustomPropRegistry` / `CustomTraitRegistry` の拡張として出力)。そのため上記の `<Box filter="blur" ... isHoge>` のような新規 prop / trait も、エディタや `astro check` で型エラーになりません。手書きの型拡張は不要です。
260
+ 統合プラグイン使用時は、追加した prop / trait も `lism-env.d.ts`(`CustomPropRegistry` / `CustomTraitRegistry` の拡張)で自動解禁され、手書きの型拡張は不要です。
260
261
 
261
262
  なお、既存 prop への値追加(`ta="justify"` 等)はもともと任意の文字列を受け付けるため、型エラーにはなりません(ただし補完候補には出ません)。
262
263
 
263
264
 
264
265
  ## 追加スタイルを読み込ませる方法
265
266
 
266
- `lism.config.js` で props を増やしただけでは、対応するユーティリティクラスのスタイルが必要になります。構成によって反映方法が異なります。
267
+ `lism.config.js` で props を増やしただけでは、対応するユーティリティクラスのスタイルが必要になります。構成によって反映方法が異なります。`traits` はクラス名だけを追加するため、`is--*` のスタイルはどの構成でも手動追記 / SCSS で用意します。
267
268
 
268
269
  ### Vite / Astro(統合プラグイン使用時)は自動反映(手動ビルド不要)
269
270
 
270
- `@lism-css/plugin` の統合プラグインを登録している場合、`lism.config.js` に props / tokens を追加すると、**dev サーバ / ビルドの CSS に自動反映されます**。追加クラス分の CSS を手動で追記したり `npx lism-css build` を回したりする必要はありません。dev 中に `lism.config.js` を変更すると HMR で CSS が再生成され、型 `.d.ts` も追従します。
271
-
272
- 参照先の **CSS 変数の値そのもの**(`:root { --lts--2xl: .5em }` のような定義)も、`tokens` に値を書けば自動生成されます。値の定義・ユーティリティ生成・props 受理がまとめて反映されるため、`global.css` への手書きは不要です(既定値の上書きも可能)。
273
-
274
- ```js
275
- // lism.config.js — 値そのものも config に集約できる
276
- export default {
277
- tokens: {
278
- lts: { '2xl': '.5em' }, // :root { --lts--2xl: .5em } + .-lts:2xl を自動生成
279
- },
280
- };
281
- ```
282
-
283
- > `is--*` クラスのスタイルは `traits` ではクラス名のみを追加するため、対応するスタイルは別途必要です(後述の手動追記 / SCSS を参照)。
271
+ `@lism-css/plugin` の統合プラグインを登録している場合、`lism.config.js` に props / tokens を追加すると、**dev サーバ / ビルドの CSS に自動反映されます**。手動追記や `npx lism-css build` は不要で、dev 中の変更は HMR で CSS と型 `.d.ts` が追従します。`tokens` に書いた値は CSS 変数の定義(`:root { --lts--2xl: .5em }`)・ユーティリティクラス・props 受理がまとめて反映されるため、`global.css` への手書きも不要です(既定値の上書きも可)。
284
272
 
285
273
  軽微な追加であれば、props を増やさず Lism Props の `:value` 記法(→ [property-class.md](./property-class.md))と `global.css` への手書きだけで済ませることもできます。
286
274
 
@@ -316,8 +304,7 @@ npx lism-css build --full # full.css / full_no_layer.css も生成
316
304
  ```
317
305
 
318
306
  > **注意**:
319
- > - `tokens` に値を書けば、`-lts:2xl` **ユーティリティクラス**と、参照先の CSS 変数(`:root { --lts--2xl: .5em }` のような **値そのもの**)の両方が CLI ビルドでも出力されます。値が `'-'` のキーはカタログ登録のみで `:root` 宣言を出力しません(実値は手書きSCSS側)。
320
- > - `is--*` クラスのスタイルは自動生成されないため、手動で追加してください。
307
+ > - `tokens` の値は CLI ビルドでも CSS 変数とユーティリティクラスの両方が出力されます。値が `'-'` のキーはカタログ登録のみで `:root` 宣言を出力しません(`flow` や `bdrs.inner` のように実値を手書きSCSS側へ置くもの)。
321
308
  > - `lism-css` パッケージ自体を上書きする処理のため、**パッケージ更新ごとに再実行**が必要です。
322
309
 
323
310
  ### 手動で CSS を追記
@@ -336,16 +323,15 @@ CLI を使わず、追加クラス分の CSS をプロジェクト側で書い
336
323
  }
337
324
  ```
338
325
 
339
- ### SCSS で `lism.config.js` と整合させる
326
+ ### SCSS だけで値を追加する(`lism.config.js` を使わない構成)
340
327
 
341
- SCSS 経由で読み込む構成なら、`lism.config.js` と同じ追加分を `$props` の `utilities` 設定として書いておけば、ビルドコマンドなしで反映できます。
328
+ `@lism-css/plugin` を使わない構成では `lism.config.js` は読み込まれない。SCSS `$props` の `utilities` で値を追加し、コンポーネントからは `:value` 記法(`p=":box"`)で強制クラス化するか、HTML に直接クラスを書いて使う。
342
329
 
343
330
  ```scss
344
331
  @use '../path-to/node_modules/lism-css/scss/setting' with (
345
332
  $props: (
346
333
  'ta': ( utilities: ( 'justify': 'justify' ) ),
347
334
  'p': ( utilities: ( 'box': '2em' ) ),
348
- 'filter': ( utilities: ( 'blur': 'blur(3px)' ) ),
349
335
  'lts': ( utilities: ( '2xl': 'var(--lts--2xl)' ) ),
350
336
  )
351
337
  );
@@ -28,12 +28,11 @@
28
28
  | 表記 | 条件 | 例 |
29
29
  | --- | --- | --- |
30
30
  | `s`, `m`, `l`, `xl`... | ベース値を中心に大小の段階を示す | `--fz--s`, `--fz--l` |
31
- | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--lh--base` |
31
+ | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--hl--base` |
32
32
  | `10`, `20`, `30`... | `0`(`none`)基準で段階的に増加 | `--bdrs--20`, `--bxsh--30` |
33
33
  | セマンティック名 | 上記に当てはまらない場合 | `--ar--og` |
34
34
 
35
- > 🎵 **例外: opacity トークン**
36
- > opacity(`--o--mp` / `--o--p` / `--o--pp` / `--o--ppp`)は、音楽の強弱記号(piano 系列)に由来するセマンティック命名を採用している。`p`(piano / 弱く)の反復回数が多いほど透明度が増す構造で、「文字の反復回数で段階を表す」命名は Lism 内で opacity のみの例外。
35
+ 例外: opacity トークン(`--o--mp` / `--o--p` / `--o--pp` / `--o--ppp`)は文字の反復回数で段階を表す(由来は [tokens.md](./tokens.md#透明度-o))。
37
36
 
38
37
  ### Property Class 用の変数
39
38
 
@@ -53,13 +52,13 @@
53
52
 
54
53
  ## クラスの命名規則
55
54
 
56
- クラス分類ごとのプレフィックス(`c--`/`a--`/`l--`/`is--`/`has--`/`set--`/`u--`)と各分類の責務・所属レイヤーは、[css-rules.md](./css-rules.md#クラス分類とプレフィックス)の分類表を正本とします。
55
+ クラス分類ごとのプレフィックス(`b--`/`c--`/`a--`/`l--`/`is--`/`has--`/`set--`/`u--`)と各分類の責務・所属レイヤーは、[css-rules.md](./css-rules.md#クラス分類とプレフィックス)の分類表を正本とします。ユーザー定義クラスの2分類(`b--`/`c--`)の使い分けは[css-rules.md](./css-rules.md#独自クラスの選び方2分類)を参照してください。
57
56
 
58
- プレフィックスに続く名称は camelCase(例: `c--myComponent`)。`is--`/`has--`/`set--`/`u--`にも同じ規則が適用されます。
57
+ プレフィックスに続く名称は camelCase(例: `c--myComponent`)。`is--`/`has--`/`set--`/`u--`にも同じ規則が適用されます。ページ固有の要素は、ページslug等を含めると名前だけで由来がわかります(例: `c--landingHero`)。
59
58
 
60
- ### `c--*`の命名
59
+ ### `c--*`/`b--*`の命名
61
60
 
62
- Block/Element/Modifierの形式(Block=`c--{name}`、Element=`_`ひとつ、Modifier=`--`ふたつ)は[css-rules.md](./css-rules.md#component-classc--)を参照。Block名はcamelCaseを第一候補にし、既存コードがアンダースコア区切りならそれに合わせます。単語区切りのハイフン(`c--feature-card`)とBEM風の`__`は使いません(NG→OK例は[antipatterns-layout.md](./antipatterns-layout.md#クラス名の命名ミス)を参照)。
61
+ Block/Element/Modifierの形式(Block=`c--{name}` / `b--{name}`、Element=`_`ひとつ、Modifier=`--`ふたつ)は[css-rules.md の独自クラスの選び方](./css-rules.md#独自クラスの選び方2分類)を参照。Block名はcamelCaseを第一候補にし、既存コードがアンダースコア区切りならそれに合わせます。単語区切りのハイフン(`c--feature-card`)とBEM風の`__`は使いません(NG→OK例は[antipatterns-layout.md](./antipatterns-layout.md#クラス名の命名ミス)を参照)。
63
62
 
64
63
  Property Class の形式:
65
64
 
@@ -185,23 +184,8 @@ NG例: `flex` → `fx` としたうえで `flex-shrink` を `fsh` にする(`f
185
184
  .-bdrs:20 → border-radius: var(--bdrs--20);
186
185
  ```
187
186
 
188
- opacity トークンは音楽記号に由来する例外的な命名で、そのままクラス化される。
189
-
190
- ```
191
- .-o:mp → opacity: var(--o--mp);
192
- .-o:p → opacity: var(--o--p);
193
- .-o:pp → opacity: var(--o--pp);
194
- .-o:ppp → opacity: var(--o--ppp);
195
- ```
187
+ opacity トークンもそのままクラス化される(`.-o:p` → `opacity: var(--o--p)`)。
196
188
 
197
189
  ### 長いキーワード値の省略
198
190
 
199
- 6文字以上かつ省略しても意味が通るものは省略可:
200
-
201
- | 実際の値 | 省略名 | クラスの例 |
202
- | --- | --- | --- |
203
- | `uppercase` | `upper` | `-tt:upper` |
204
- | `lowercase` | `lower` | `-tt:lower` |
205
- | `fit-content` | `fit` | `-w:fit`, `-h:fit` |
206
- | `space-between` | `between` | `-ac:between`, `-jc:between` |
207
- | `currentColor` | `current` | `-bdc:current` |
191
+ 6文字以上かつ省略しても意味が通るものは省略可(`uppercase` → `-tt:upper` 等)。一覧は [property-class.md](./property-class.md#値の省略形例外一覧) を参照。
@@ -25,14 +25,14 @@
25
25
  | `fw` | `font-weight` | `-fw:light`, `-fw:normal`, `-fw:bold`, `-fw:100`〜`-fw:900` | — |
26
26
  | `ff` | `font-family` | `-ff:base`, `-ff:accent`, `-ff:mono` | — |
27
27
  | `fs` | `font-style` | `-fs:italic` | — |
28
- | `hl` | `--hl`(ハーフレディング) | `-hl:base`, `-hl:xs`, `-hl:s`, `-hl:l`, `-hl:0` | ✔ |
29
- | `lh` | `line-height`(`--hl` 経由・互換) | `-lh:base`, `-lh:xs`, `-lh:s`, `-lh:l`, `-lh:1` | — |
28
+ | `hl` | `--hl`(ハーフレディング) | `-hl:base`, `-hl:xs`, `-hl:s`, `-hl:l`, `-hl:xl`, `-hl:0` | ✔ |
29
+ | `lh` | `line-height`(倍率・`--lh` 経由) | `-lh:xs`, `-lh:s`, `-lh:m`, `-lh:l`, `-lh:xl`, `-lh:1` | — |
30
30
  | `lts` | `letter-spacing` | `-lts:base`, `-lts:s`, `-lts:l`, `-lts:xl` | — |
31
31
  | `ta` | `text-align` | `-ta:center`, `-ta:left`, `-ta:right` | — |
32
32
  | `td` | `text-decoration` | `-td:none` | — |
33
33
  | `tt` | `text-transform` | `-tt:upper`, `-tt:lower` | — |
34
34
 
35
- **注意:** Lism はハーフレディングで `line-height` を管理します(`line-height: calc(1em + var(--hl) * 2)`)。正規のプロパティは `hl` で、`--hl` にトークン値をセットします(`hl="0"` でハーフレディングなし、BP 指定可)。`lh` は互換ショートカットで、トークン値・`1` は `--hl` を制御し、`lh="1.7"` のような任意値はそのまま CSS `line-height` を出力します。新規コードでは `hl` を推奨します。
35
+ **注意:** `line-height` は全要素で `var(--lh, calc(1em + var(--hl) * 2))` として管理されます。基本は `hl`(fz 非依存の固定量)を使い、fz に比例した行送りを保ちたい場合だけ `lh`(倍率)を使います。`lh` を指定した要素の子孫では `hl` は効きません。
36
36
 
37
37
  ### 表示・可視性
38
38
 
@@ -83,23 +83,25 @@
83
83
  | `bgr` | `background-repeat` | `-bgr:no-repeat` | — |
84
84
  | `bgp` | `background-position` | `-bgp:center` | — |
85
85
  | `bgsz` | `background-size` | `-bgsz:cover`, `-bgsz:contain` | — |
86
- | `bgc` | `background-color` | `-bgc:base`, `-bgc:base-2`, `-bgc:text`, `-bgc:brand`, `-bgc:accent`, `-bgc:inherit`, `-bgc:transparent` | — |
86
+ | `bgc` | `background-color` | `-bgc:base`, `-bgc:base-2`, `-bgc:text`, `-bgc:brand`, `-bgc:accent`, `-bgc:keycolor`, `-bgc:inherit`, `-bgc:transparent`, `-bgc:current` | — |
87
87
 
88
88
  ### カラー
89
89
 
90
90
  | Prop | CSS プロパティ | プリセット値クラス | BP |
91
91
  | --- | --- | --- | --- |
92
- | `c` | `color` | `-c:base`, `-c:text`, `-c:text-2`, `-c:brand`, `-c:accent`, `-c:inherit` | — |
92
+ | `c` | `color` | `-c:base`, `-c:text`, `-c:text-2`, `-c:brand`, `-c:accent`, `-c:keycolor`, `-c:inherit` | — |
93
93
  | `keycolor` | `--keycolor` 変数のみ | — | — |
94
94
 
95
95
  セマンティック/パレットの全カラートークンは [tokens.md のカラー](../tokens.md#カラー)を参照。<br />
96
96
  キーカラー変数: `keycolor`(ユーザー定義の `--keycolor` を参照する独立変数。詳細は `tokens.md` を参照)
97
97
 
98
+ `c` / `bgc` / `bdc` に `keycolor` を指定すると、`--keycolor` を参照する `-c:keycolor` のようなクラスが出力される(`style` 属性ではない)。
99
+
98
100
  ### 角丸
99
101
 
100
102
  | Prop | CSS プロパティ | プリセット値クラス | BP |
101
103
  | --- | --- | --- | --- |
102
- | `bdrs` | `border-radius` | `-bdrs:0`, `-bdrs:10`, `-bdrs:20`, `-bdrs:30`, `-bdrs:40`, `-bdrs:99`, `-bdrs:inner` | ✔ |
104
+ | `bdrs` | `border-radius` | `-bdrs:0`, `-bdrs:10`, `-bdrs:20`, `-bdrs:30`, `-bdrs:40`, `-bdrs:50`, `-bdrs:99`, `-bdrs:inner` | ✔ |
103
105
  | `bdrs-tl` | `border-top-left-radius` | — | — |
104
106
  | `bdrs-tr` | `border-top-right-radius` | — | — |
105
107
  | `bdrs-br` | `border-bottom-right-radius` | — | — |
@@ -142,14 +144,14 @@
142
144
  | `p` | `padding` | `-p:0`, `-p:5`, `-p:10`, `-p:20`, ... (SPACEトークン) | ✔ |
143
145
  | `px` | `padding-inline` | `-px:0`, `-px:5`, `-px:10`, `-px:20`, ... (SPACEトークン) | ✔ |
144
146
  | `py` | `padding-block` | `-py:0`, `-py:5`, `-py:10`, `-py:20`, ... (SPACEトークン) | ✔ |
145
- | `ps` | `padding-inline-start` | | ✔ |
146
- | `pe` | `padding-inline-end` | | ✔ |
147
- | `pbs` | `padding-block-start` | | ✔ |
148
- | `pbe` | `padding-block-end` | | ✔ |
149
- | `pl` | `padding-left` | | |
150
- | `pr` | `padding-right` | | |
151
- | `pt` | `padding-top` | | |
152
- | `pb` | `padding-bottom` | | |
147
+ | `ps` | `padding-inline-start` | `-ps:5`, `-ps:10`, `-ps:20`, ... (SPACEトークン) | ✔ |
148
+ | `pe` | `padding-inline-end` | `-pe:5`, `-pe:10`, `-pe:20`, ... (SPACEトークン) | ✔ |
149
+ | `pbs` | `padding-block-start` | `-pbs:5`, `-pbs:10`, `-pbs:20`, ... (SPACEトークン) | ✔ |
150
+ | `pbe` | `padding-block-end` | `-pbe:5`, `-pbe:10`, `-pbe:20`, ... (SPACEトークン) | ✔ |
151
+ | `pl` | `padding-left` | `-pl:5`, `-pl:10`, `-pl:20`, ... (SPACEトークン) | |
152
+ | `pr` | `padding-right` | `-pr:5`, `-pr:10`, `-pr:20`, ... (SPACEトークン) | |
153
+ | `pt` | `padding-top` | `-pt:5`, `-pt:10`, `-pt:20`, ... (SPACEトークン) | |
154
+ | `pb` | `padding-bottom` | `-pb:5`, `-pb:10`, `-pb:20`, ... (SPACEトークン) | |
153
155
 
154
156
  SPACEトークンの全値(`5`〜`80`の離散値)は [tokens.md の余白 (space)](../tokens.md#余白-space) を参照。
155
157
 
@@ -160,22 +162,22 @@ SPACEトークンの全値(`5`〜`80`の離散値)は [tokens.md の余白 (
160
162
  | `m` | `margin` | `-m:auto`, `-m:0`, `-m:5`, `-m:10`, `-m:20`, ... (SPACEトークン) | ✔ |
161
163
  | `mx` | `margin-inline` | `-mx:auto`, `-mx:0`, `-mx:5`, `-mx:10`, `-mx:20`, ... (SPACEトークン) | ✔ |
162
164
  | `my` | `margin-block` | `-my:auto`, `-my:0`, `-my:5`, `-my:10`, `-my:20`, ... (SPACEトークン) | ✔ |
163
- | `ms` | `margin-inline-start` | `-ms:auto` | ✔ |
164
- | `me` | `margin-inline-end` | `-me:auto` | ✔ |
165
+ | `ms` | `margin-inline-start` | `-ms:auto`, `-ms:5`, `-ms:10`, `-ms:20`, ... (SPACEトークン) | ✔ |
166
+ | `me` | `margin-inline-end` | `-me:auto`, `-me:5`, `-me:10`, `-me:20`, ... (SPACEトークン) | ✔ |
165
167
  | `mbs` | `margin-block-start` | `-mbs:auto`, `-mbs:0`, `-mbs:5`, `-mbs:10`, `-mbs:20`, ... (SPACEトークン) | ✔ |
166
- | `mbe` | `margin-block-end` | `-mbe:auto` | ✔ |
167
- | `ml` | `margin-left` | | |
168
- | `mr` | `margin-right` | | |
169
- | `mt` | `margin-top` | | |
170
- | `mb` | `margin-bottom` | | |
168
+ | `mbe` | `margin-block-end` | `-mbe:auto`, `-mbe:5`, `-mbe:10`, `-mbe:20`, ... (SPACEトークン) | ✔ |
169
+ | `ml` | `margin-left` | `-ml:5`, `-ml:10`, `-ml:20`, ... (SPACEトークン) | |
170
+ | `mr` | `margin-right` | `-mr:5`, `-mr:10`, `-mr:20`, ... (SPACEトークン) | |
171
+ | `mt` | `margin-top` | `-mt:5`, `-mt:10`, `-mt:20`, ... (SPACEトークン) | |
172
+ | `mb` | `margin-bottom` | `-mb:5`, `-mb:10`, `-mb:20`, ... (SPACEトークン) | |
171
173
 
172
174
  ### Gap
173
175
 
174
176
  | Prop | CSS プロパティ | プリセット値クラス | BP |
175
177
  | --- | --- | --- | --- |
176
178
  | `g` | `gap` | `-g:0`, `-g:inherit`, `-g:5`, `-g:10`, `-g:20`, ... (SPACEトークン) | ✔ |
177
- | `cg` | `column-gap` | | |
178
- | `rg` | `row-gap` | | |
179
+ | `cg` | `column-gap` | `-cg:5`, `-cg:10`, `-cg:20`, ... (SPACEトークン) | |
180
+ | `rg` | `row-gap` | `-rg:5`, `-rg:10`, `-rg:20`, ... (SPACEトークン) | |
179
181
 
180
182
  ### Flex
181
183
 
@@ -12,10 +12,13 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
12
12
  `-bd` または `-bd-{side}` クラスが付くと、以下の初期値がセットされる。
13
13
 
14
14
  ```scss
15
+ /* 変数の初期値だけ弱い位置に置く(@layer ビルドでは @layer lism-base、no_layer ビルドでは :where()) */
15
16
  :where(.-bd, [class*=" -bd-"], [class^="-bd-"]) {
16
17
  --bds: solid;
17
18
  --bdw: 1px;
18
19
  --bdc: var(--divider);
20
+ }
21
+ .-bd, [class*=" -bd-"], [class^="-bd-"] {
19
22
  border-width: var(--bdw);
20
23
  border-color: var(--bdc);
21
24
  }
@@ -51,7 +54,7 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
51
54
  | --- | --- | --- | --- |
52
55
  | `bd` | — | `-bd:none` | — |
53
56
  | `bds` | `--bds` | `-bds:dashed`, `-bds:dotted`, `-bds:double` | — |
54
- | `bdc` | `--bdc` | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` | — |
57
+ | `bdc` | `--bdc` | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:keycolor`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` | — |
55
58
  | `bdw` | `--bdw` | — | `-bdw_sm`, `-bdw_md` |
56
59
 
57
60
  `bdw` はブレイクポイント指定に対応。`--bdw` の値を BP で切り替えることで、ボーダーの方向自体を変化させることもできる。
@@ -92,7 +92,7 @@ Lism CSS のボーダーは CSS 変数(`--bds` / `--bdw` / `--bdc`)で管理
92
92
  | --- | --- | --- |
93
93
  | `bd` | `border`(変数管理を有効化) | `-bd`, `-bd-{x\|y\|s\|e\|bs\|be\|t\|b\|l\|r}`, `-bd:none` |
94
94
  | `bds` | `--bds` | `-bds:dashed`, `-bds:dotted`, `-bds:double` |
95
- | `bdc` | `--bdc` | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` |
95
+ | `bdc` | `--bdc` | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:keycolor`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` |
96
96
  | `bdw` | `--bdw` | BP クラス: ✔(`-bdw_sm` / `-bdw_md`) |
97
97
 
98
98
  → 詳細(方向ごとのスタイル指定、BP での方向切り替え等)は [property-class/bd.md](./property-class/bd.md) 参照
@@ -125,6 +125,7 @@ Property Class の値名は基本的に CSS の実値と同じですが、以下
125
125
  | `-w:fit` | `width: fit-content` | `w`, `h` |
126
126
  | `-ac:between` | `align-content: space-between` | `ac`, `jc` |
127
127
  | `-bdc:current` | `border-color: currentColor` | `bdc` |
128
+ | `-bgc:current` | `background-color: currentColor` | `bgc` |
128
129
 
129
130
 
130
131
  ## Property Class の特殊な出力タイプ
@@ -1,13 +1,9 @@
1
1
  # 実装プランの作り方(C0–C8詳細・出力フォーマット)
2
2
 
3
- Lism CSSで新規UI・セクション・コンポーネントを書く前に作る「実装プラン」の詳細編です。実装フローの全体像・資料確認トリガー表・判定記号は`SKILL.md`を正本とします。ここでは各チェック項目(C0–C8)の詳細とプランの出力フォーマットをまとめます。
4
-
5
- 判定記号(✅/🔁/⏸、`✅新規`・`✅例外`の注記を含む)の定義は`SKILL.md`の「判定記号」を参照してください。
3
+ Lism CSSで新規UI・セクション・コンポーネントを書く前に作る「実装プラン」の詳細編。実装フロー・資料確認トリガー・判定記号(✅/🔁/⏸と注記)は`SKILL.md`が正本で、ここではC0–C8の詳細とプランの出力フォーマットだけを扱う。
6
4
 
7
5
  ## 資料確認
8
6
 
9
- どの操作の手前で何を読むかは`SKILL.md`の「資料確認トリガー」を正本とする。
10
-
11
7
  ### 初期確認(C0前に実行)
12
8
 
13
9
  新規UI/コンポーネント/セクション、またはスクショ/Figma等のデザイン再現では、C0に入る前に対象へ明らかに関係する最小限の詳細ファイルを実際に開く。
@@ -18,15 +14,15 @@ Lism CSSで新規UI・セクション・コンポーネントを書く前に作
18
14
  初期確認した資料: primitives/l--stack.md, primitives/l--columns.md, tokens.md
19
15
  ```
20
16
 
21
- 新規UI/コンポーネント/セクションで初期確認した資料が空のまま実装に入ってはいけない。「必要なら参照」とだけ書くのも不可。軽微な既存パターン内の修正で既存コード確認のみで足りる場合は、その旨を明記する。
17
+ 空のまま、または「必要なら参照」とだけ書いて実装に入らない。既存コード確認だけで足りる軽微な修正では、その旨を書く。
22
18
 
23
19
  ### 資料確認の記録
24
20
 
25
- 読んだ資料は「初期確認」「実装中」を区別して資料確認ログに記録する。提出前に、🔁が✅または⏸へ解消されたかを照合する。
21
+ 読んだ資料は「初期確認」「実装中」を区別して資料確認ログ(「出力フォーマット」参照)に記録する。
26
22
 
27
23
  ## C0–C8 実装前チェック詳細
28
24
 
29
- 各Cは「列挙/照合・判定/決め方/参照先/よい例・避けたい例」の観点で判断します。
25
+ 各Cは「列挙/照合・判定/決め方/参照先/よい例・避けたい例」の観点で判断する。
30
26
 
31
27
  ### C0: 入力整理
32
28
 
@@ -40,8 +36,7 @@ Lism CSSで新規UI・セクション・コンポーネントを書く前に作
40
36
 
41
37
  - **列挙**: 縦並び/横並び/カラム/メディア枠/幅制御/オーバーレイ/全体リンクなどの構造、要素、heading level、landmark。
42
38
  - **照合・判定**: 標準Primitiveで組める→✅。カラム系など迷う→🔁。`@lism-css/ui`で済む→✅または🔁。使うPrimitive詳細を未読なら🔁のまま実装しない。
43
- - **決め方**: Layout Primitive→Trait→Atomic→UIコンポーネントの順。`<div>`+Property ClassやCSSで押し切らない。
44
- - **Primitive優先ガード**: `<div>`+CSSで押し切らず、`SKILL.md`の「目的別実装ガイド」で候補を先に確認する。この判断を書かずに実装しない。
39
+ - **決め方**: `SKILL.md`の「目的別実装ガイド」で候補を先に確認し、Layout Primitive→Trait→Atomic→UIコンポーネントの順に選ぶ。`<div>`+Property ClassやCSSで押し切らない。この判断を書かずに実装しない。
45
40
  - **参照先**: `SKILL.md`の「目的別実装ガイド」、`primitive-class.md`、`primitives/l--*.md`、`trait-class.md`、`components-core.md`、`components-ui.md`、`antipatterns-layout.md#レイアウト選択ミス`。
46
41
  - **よい例・避けたい例**: OK=`<Columns cols={3}>`、`<Frame ar="16/9">`、Astroなら`import { Stack, Columns, Frame } from 'lism-css/astro'`。罠=素の`<div>`だらけ、`<div -d:grid gtc=...>`、手組みメディア枠、最外殻Wrapper。
47
42
 
@@ -50,47 +45,47 @@ Lism CSSで新規UI・セクション・コンポーネントを書く前に作
50
45
  - **列挙**: 同じ部品が3箇所以上になりそうか、値差分・slot構造があるか。
51
46
  - **照合・判定**: 3+反復見込みかつ同じ意味のUI部品として安定→`✅新規`(コンポーネント化して着手)。1〜2回・局所・一時的重複→✅そのまま。Props設計が必要→⏸。
52
47
  - **決め方**: CSSの`c--`新設でなくReact/Astroコンポーネント抽出を優先。`className`/`style`/`data-*`/ARIA/イベントハンドラの受け渡しを最初から設計する。
53
- - **参照先**: `components-core.md`、`components-ui.md`、`css-rules.md#component-classc--`、`property-class.md`、本ファイルの「出力フォーマット」。
48
+ - **参照先**: `components-core.md`、`components-ui.md`、`css-rules.md#custom-classc--`、`property-class.md`、本ファイルの「出力フォーマット」。
54
49
  - **よい例・避けたい例**: OK=反復するTagをTagコンポーネント化。罠=Property Classの組み合わせをコピペ展開。
55
50
 
56
51
  ### C3: 命名設計
57
52
 
58
- - **列挙**: 新設する`c--`/`z--`/`p--`名とBlock/Element/Modifier構造、`c--*` CSSを置くLayer。
59
- - **照合・判定**: プレフィックス後の名前が規約に合う→✅。ハイフンや`__`がある→🔁。サイト領域→`✅新規`(`z--`)。ページ固有→`✅新規`(`p--`)。公開API・CMS・外部JS・E2E依存→⏸。`.c--*` CSSがLayer外になる→🔁。
60
- - **決め方**: `naming.md`に従う。Block名にハイフンは使わず、Element区切りは`_`ひとつ、Modifierは`--`ふたつ。再利用UIでない領域は`z--`、ページ固有は`p--`。`c--*` CSSを書く場合は必ず`@layer lism-component {}`内に置く。
61
- - **参照先**: `naming.md`、`css-rules.md#component-classc--`、`css-rules.md#独自プレフィックス`、`antipatterns-layout.md#クラス名の命名ミス`。
62
- - **よい例・避けたい例**: OK=`c--featureCard`、`c--featureCard_body`、既存命名がアンダースコア寄せなら`c--feature_card`。罠=`c--feature-card`、`c--hero__inner`(正しくは`c--hero_inner`)、`c--feature-card__body`(正しくは`c--featureCard_body`)、サイトヘッダを`c--`にする。
53
+ - **列挙**: 新設する`b--`/`c--`のクラス名とBlock/Element/Modifier構造、独自CSSを置くLayer。
54
+ - **照合・判定**: プレフィックス後の名前が規約に合う→✅。ハイフンや`__`がある→🔁。CSSで参照しないElement(`c--name_elem`)を付けている→🔁(外す)。ベーススタイルを CSS 側で管理する共通基礎部品→`✅新規`(`b--`)。それ以外のカスタムクラス→`✅新規`(`c--`)。公開API・CMS・外部JS・E2E依存→⏸。独自CSSがLayer外になる→🔁。
55
+ - **決め方**: 記法とBlock名の付け方は`naming.md`、`b--`/`c--`の分類(`b--`は3条件をすべて満たす時だけ)と置くLayerは`css-rules.md`に従う。
56
+ - **参照先**: `naming.md`、`css-rules.md#block-classb--`、`css-rules.md#custom-classc--`、`css-rules.md#独自クラスの選び方2分類`、`antipatterns-layout.md#クラス名の命名ミス`、`antipatterns-layout.md#css-の無い-element-クラスを付ける`。
57
+ - **よい例・避けたい例**: OK=`c--featureCard`、`c--featureCard_body`、既存命名がアンダースコア寄せなら`c--feature_card`。罠=`c--feature-card`、`c--hero__inner`(正しくは`c--hero_inner`)、`c--feature-card__body`(正しくは`c--featureCard_body`)、CSSで参照しない`c--featureCard_title`(外す)。
63
58
 
64
59
  ### C4: 状態・バリエーション設計
65
60
 
66
61
  - **列挙**: active/open/disabled/currentなどの状態、solid/outlineなどの見た目違い。
67
- - **照合・判定**: 状態→`✅新規`(`data-*`/ARIA)。見た目違い→`✅新規`(`c--name--variant`)。正規Traitが当たる→✅。
68
- - **決め方**: 状態は属性セレクタ、バリエーションはBEM Modifier。`is--`を状態/バリエーションに流用しない。
69
- - **参照先**: `trait-class.md`、`trait-class/is--*.md`、`antipatterns-layout.md#is---の誤用状態バリエーション`、`css-rules.md#component-classc--`。
70
- - **よい例・避けたい例**: OK=`data-is-active`+`[data-is-active]`、`c--tag--solid`。罠=`is--active`、`is--solid`。
62
+ - **照合・判定**: 状態→`✅新規`(`data-*`/ARIA)。見た目違い→`✅新規`(C3で決めたBlockと同じプレフィックスのModifier。`c--`なら`c--name--variant`、`b--`なら`b--name--variant`)。Blockと異なるプレフィックスのModifierになっている→🔁。正規Traitが当たる→✅。
63
+ - **決め方**: 状態は属性セレクタ、バリエーションはBEM Modifier。ModifierのプレフィックスはC3で決めたBlockに合わせ、`c--`と`b--`を混在させない。`is--`を状態/バリエーションに流用しない。
64
+ - **参照先**: `trait-class.md`、`trait-class/is--*.md`、`antipatterns-layout.md#is---の誤用状態バリエーション`、`css-rules.md#custom-classc--`、`css-rules.md#block-classb--`。
65
+ - **よい例・避けたい例**: OK=`data-is-active`+`[data-is-active]`、`c--pricing--featured`、`b--btn--outline`。罠=`is--active`、`is--solid`、`b--btn`に対する`c--btn--outline`(Blockと違うプレフィックス)。
71
66
 
72
67
  ### C5: 値・トークン照合
73
68
 
74
69
  - **列挙**: spacing/color/fz/radius/shadow/size/lh/ltsなど、使う予定の値をすべて列挙。
75
- - **照合・判定**: `tokens.md`に完全一致→✅。typo・既存規約上明確な置換→🔁(`tokens.md`で正規トークンを確認して置換し✅へ)。近似丸め・任意色・ブランド色・再現度の判断→⏸。`antipatterns.md`の「直書きしてよい例外」に該当→`✅例外`。`✅例外`にできるのはこの許可リストだけで、「ユーザー指示に基づく実測値」のような例外カテゴリを自作しない。
70
+ - **照合・判定**: 「照合の手順」の3に従う(完全一致→✅/typo等の明確な置換→🔁にして`tokens.md`で確認後✅/近似丸め・任意色・ブランド色→⏸/許可リスト該当→`✅例外`)。
76
71
  - **決め方**: トークン値を流用。⏸は本ファイルの「デザインデータ取り込みフロー」に従い、トークン候補と差分表を出して確認まで書かない。CSSへ書く前に、Lism Props/Property Classで表せる値かも同時に確認する。インストール済みの`lism-css`がある環境では、実CSS(`main.css`)やコンポーネント実装でトークン・クラスの実在を確認してから採用するとtypoを防げる。
77
72
  - **参照先**: `tokens.md`、`property-class.md`、`antipatterns.md#token-typo存在しない値`、`antipatterns.md#px--固定値の直書き`。
78
73
  - **よい例・避けたい例**: OK=`-fz:xs -p:10 -bgc:base-2 -bdrs:10`。罠=`padding:13px`、`bgc="secondary"`。
79
74
 
80
75
  ### C6: レスポンシブ方針
81
76
 
82
- - **列挙**: 各値のbaseの値、切替BP(sm/md/lg)、container queryかmedia queryか、container運用なら祖先`isContainer`の有無、固定Grid化していないか。
83
- - **照合・判定**: baseの値あり・標準BP・必要な祖先あり→✅。base抜け・xs誤用→🔁。`$is_container_query:0`等でmedia query運用が確認できる場合は`isContainer`必須にしない→✅。固定列をレスポンシブ化するなど挙動変更→⏸。
84
- - **決め方**: baseの値を必ず置く。標準BPへ寄せる。同じ値の繰り返しは省略する。等幅カラムはまず`Columns cols={[1, null, 3]}`などPrimitiveのレスポンシブAPIで表せるか確認し、できない場合だけ`@container`/`@media`を自分で書く。
77
+ - **列挙**: 各値のbaseと切替BP(sm/md/lg)、container queryかmedia queryか、container運用なら祖先`isContainer`の有無、固定Grid化していないか。
78
+ - **照合・判定**: 標準BP・必要な祖先あり→✅。xs誤用→🔁。`$is_container_query:0`等でmedia query運用が確認できる場合は`isContainer`必須にしない→✅。固定列をレスポンシブ化するなど挙動変更→⏸。
79
+ - **決め方**: 標準BPへ寄せる。同じ値の繰り返しは省略する。等幅カラムはまず`Columns cols={[1, null, 3]}`などPrimitiveのレスポンシブAPIで表せるか確認し、できない場合だけ`@container`/`@media`を自分で書く。
85
80
  - **参照先**: `responsive.md`、`trait-class/is--container.md`、`property-class.md`、`primitive-class.md#カラムレイアウト-primitive-の使い分けガイド`。
86
- - **よい例・避けたい例**: OK=`p={{ base: '20', md: '30' }}`+祖先`isContainer`、`<Columns cols={[1, null, 3]}>`。罠=`gtc="repeat(3,1fr)"`固定、カード列数のためだけに`@container`直書き、base抜け、container祖先なし。
81
+ - **よい例・避けたい例**: OK=`p={{ base: '20', md: '30' }}`+祖先`isContainer`、`<Columns cols={[1, null, 3]}>`。罠=`gtc="repeat(3,1fr)"`固定、カード列数のためだけに`@container`直書き、container祖先なし。
87
82
 
88
83
  ### C7: CSSに書くもの/Propsに移すもの
89
84
 
90
85
  - **列挙**: CSSへ書く予定の各宣言を「Property Class/Propsへ移す宣言」と「CSSにしか書けない宣言」に分ける。`c--*`のCSSに残る宣言を実装プランに明記する。
91
- - **照合・判定**: 1つの要素にだけ効く見た目の指定→✅マークアップへ。擬似クラス・擬似要素・状態切替・子孫セレクタ→✅CSSへ残す。下表の宣言が`.c--*` CSSに残る→🔁未通過。
92
- - **決め方**: `-{prop}:{value}`またはLism Propsへ移す。`.c--*`はCSSが空でも意味クラスとして残す。
93
- - **参照先**: `property-class.md`、`css-rules.md#component-classc--`、`antipatterns.md#property-class-で書けるのに-css-で書く`。
86
+ - **照合・判定**: `c--*`のクラスで1つの要素にだけ効く見た目の指定→✅マークアップへ。擬似クラス・擬似要素・状態切替・子孫セレクタ→✅CSSへ残す。C3で`b--`と決めた部品のベーススタイル→✅`@layer lism-block`へ残す(トークン使用。BP切替・hover・例外調整はProperty Class)。下表の宣言が`.c--*` CSSに残る→🔁未通過。
87
+ - **決め方**: `-{prop}:{value}`またはLism Propsへ移す。本体クラス`c--name`はCSSが空でも何のパーツかを示す名前として残す。ElementはCSSで参照しなくなったら外す。
88
+ - **参照先**: `property-class.md`、`css-rules.md#custom-classc--`、`antipatterns.md#property-class-で書けるのに-css-で書く`。
94
89
  - **移行表**:
95
90
 
96
91
  | CSSでの記述 | Lism Props/Property Class |
@@ -110,23 +105,19 @@ Lism CSSで新規UI・セクション・コンポーネントを書く前に作
110
105
 
111
106
  ### C8: 既定値の確認
112
107
 
113
- - **列挙**: 使うPrimitiveが既に持つ既定CSSを確認し、同値をProps/Property Classで重ねていないか。
108
+ - **列挙**: 使うPrimitiveが既に持つ既定CSSを確認し、同値をProps/Property Classで重ねていないか。セマンティックコンポーネント(`Text`/`Inline`/`Group`等)にデフォルト要素と同じ`as`を付けていないか。
114
109
  - **照合・判定**: 既定と同値→足さない。既定と違う意図的上書き→✅。ガイドに未整備のPrimitive既定→今後の整備対象にする。
115
110
  - **決め方**: `primitives/l--*.md`の「既定の挙動」を見る。念のための`ai="center"`/`ov="hidden"`/直下img`w/h/object-fit`を足さない。
116
- - **参照先**: `primitives/l--cluster.md`、`primitives/l--frame.md`、`primitive-class.md`、`components-core.md`。
117
- - **よい例・避けたい例**: OK=`<Cluster g="15">`、`<Frame ar="16/9"><img /></Frame>`。罠=`<Cluster fxw="wrap" ai="center">`、Frame直下imgに`-w:100%`や`object-fit`。
111
+ - **参照先**: `primitives/l--cluster.md`、`primitives/l--frame.md`、`primitive-class.md`、`components-core.md#セマンティックコンポーネント`。
112
+ - **よい例・避けたい例**: OK=`<Cluster g="15">`、`<Frame ar="16/9"><img /></Frame>`。罠=`<Cluster fxw="wrap" ai="center">`、Frame直下imgに`-w:100%`や`object-fit`、`<Text as="p">`。
118
113
 
119
114
  ## 出力フォーマット
120
115
 
121
- 実装前チェックの成果物を実装プランと呼びます。各行に必ず判定記号(定義は`SKILL.md`参照)を付け、⏸が残る項目はその部分を実装しないで先にユーザー確認します。
122
-
123
- 値照合付きレベルでは、実装プラン全体をチャットの返答としてではなく`.lism/plan.md`として保存します(固定名・上書き。冒頭のメタデータヘッダに日時・対象タスク・スケール前提とその判定根拠を書く)。規約は[`verification.md`](./verification.md)を参照してください。
116
+ 実装前チェックの成果物を実装プランと呼ぶ。各行に判定記号を付ける。値照合付きレベルでは`.lism/plan.md`へ保存する(規約は[`verification.md`](./verification.md))。
124
117
 
125
118
  ### 軽量レベル
126
119
 
127
- 小変更では3〜5行で十分です。
128
-
129
- 例:
120
+ 例(3〜5行):
130
121
 
131
122
  ```md
132
123
  - ✅ 構造: 既存`Stack`内へ1項目追加。Primitive変更なし。
@@ -138,7 +129,7 @@ Lism CSSで新規UI・セクション・コンポーネントを書く前に作
138
129
 
139
130
  #### 資料確認ログ
140
131
 
141
- SKILL.md以外に実際に開いたファイルや外部サイトのページurlを、「初期確認」と「実装中」に分けて列挙します。
132
+ SKILL.md以外に実際に開いたファイルや外部サイトのページurlを、「初期確認」と「実装中」に分けて列挙する。
142
133
 
143
134
  例:
144
135
  | タイミング | 種類 | 確認した資料 | 用途 |
@@ -147,19 +138,17 @@ SKILL.md以外に実際に開いたファイルや外部サイトのページurl
147
138
  | 実装中 | 📄 | `tokens.md` | デザイン値とトークン照合(トークン丸めトリガー) |
148
139
  | 実装中 | URL | `https://lism-css.com/docs/naming.md` | `c--*`命名トリガー |
149
140
 
150
- 各行は実装プランの判断項目(特に🔁)と対応させ、提出前に🔁が✅/⏸へ解消されたかを照合します。
141
+ 各行を実装プランの判断項目(特に🔁)と対応させる。
151
142
 
152
143
  #### 🔁判断行
153
144
 
154
- 未読の判断項目そのものに🔁と読む資料を紐づけます。
145
+ 未読の判断項目そのものに🔁と読む資料を紐づける。資料を読んだら同じ行を✅または⏸へ更新する。
155
146
 
156
147
  | 判断項目 | 採用案 | 読む資料 | 判定 |
157
148
  | --- | --- | --- | --- |
158
149
  | カード一覧 | `Columns cols={[1, null, 3]}` | `primitives/l--columns.md` | 🔁 |
159
150
  | hover指定 | `hov={{ bgc: 'base-2' }}` | `property-class/hov.md` | 🔁 |
160
151
 
161
- 対応資料を読んだら、同じ判断行を✅または⏸へ更新します。提出前に🔁が残っている場合は未通過です。
162
-
163
152
  #### 構造表
164
153
 
165
154
  | 対象領域 | 採用Primitive・コンポーネント | 理由 | 参照先 | 判定 |
@@ -168,7 +157,7 @@ SKILL.md以外に実際に開いたファイルや外部サイトのページurl
168
157
 
169
158
  #### トークン表
170
159
 
171
- 値照合付きでは`デザイン値`と`差分`列を必須にします。
160
+ 値照合付きでは`デザイン値`と`差分`列を必須にする。
172
161
 
173
162
  | 用途 | デザイン値 | 採用トークン | 差分 | 判定 |
174
163
  | --- | --- | --- | --- | --- |
@@ -197,9 +186,9 @@ SKILL.md以外に実際に開いたファイルや外部サイトのページurl
197
186
 
198
187
  #### 入力種別と既定動作
199
188
 
200
- デザイン値の扱いは、入力の種類とプロジェクトの段階で決まります。「正確に再現して」等の指示があってもこの分岐が既定動作で、ユーザー指示を根拠に`✅例外`を自作してはいけません。
189
+ デザイン値の扱いは、入力の種類とプロジェクトの段階で決まる。「正確に再現して」等の指示があってもこの分岐が既定動作。
201
190
 
202
- この表は⏸確認を省略する許可ではありません。丸め・任意色などの⏸判定自体は最小ゲート・C5のとおりで、既定動作は「確認時に第一候補として提示する案」と「確認が取れない場合に前提として選ぶ選択肢」を定めるものです(`SKILL.md`「判定記号」の⏸運用を参照)。
191
+ この表は⏸確認を省略する許可ではない。既定動作は、確認時に第一候補として出す案と、確認が取れない時に`✅前提`として選ぶ選択肢(`SKILL.md`「判定記号」の⏸の項)を定める。
203
192
 
204
193
  | 入力 | 既定動作 |
205
194
  | --- | --- |
@@ -215,28 +204,27 @@ SKILL.md以外に実際に開いたファイルや外部サイトのページurl
215
204
  - 完全一致→✅そのまま採用。
216
205
  - typo・既存規約上明確な置換(`secondary`→`base-2`など)→`tokens.md`で正規トークンを確認して置換し、✅にする(ユーザー確認は不要)。
217
206
  - 近似丸め・任意色・ブランド色・密度/再現度の判断→⏸。A=最寄りトークンに丸める/B=カスタムトークン化または基準値(`--s-unit`等)の上書き/C=px直書き(例外)を提示する。この選択肢の定義はここが正本。
207
+ - `antipatterns.md`の「直書きしてよい例外」に該当→`✅例外`(条件は`SKILL.md`「判定記号」)。
218
208
  4. **カスタムトークン化の条件**: 同値が複数箇所で再利用される、またはデザインシステム上の意味を持つ場合は候補にする。1回限りの局所値は丸めか例外で済ませる。
219
209
  5. **デザインデータが無い場合**: 差分表は省略し、既存トークンから意味が近い値を選ぶ。新規数値が必要な時だけ⏸にする。
220
210
 
221
- `--s-unit`などの基準値をプロジェクトが上書きしているとpxの完全一致判定が変わります。値照合付きでは上書きの有無を先に確認してください。
222
-
223
- プロセス違反の実例(NG):
211
+ `--s-unit`などの基準値をプロジェクトが上書きしているとpxの完全一致判定が変わる。値照合付きでは上書きの有無を先に確認する。
224
212
 
225
- - C5に「ユーザー要件の『正確に再現』に基づくページ固有実測値として採用」のような1行を書いて値照合を包括免除し、差分表を省略する。値照合付きレベルでトークン差分表の無い実装プランは無効。
213
+ 実測pxを包括的に例外化するNG例は[`antipatterns.md`](../antipatterns.md#px--固定値の直書き)の「実測pxの包括例外化」。
226
214
 
227
215
  #### 値マッピングの初期すり合わせ
228
216
 
229
- デザインシステムが未確立のプロジェクトで初期実装を任された場合は、値ごとに⏸を出すのではなく、実装前にマッピング方針を一括ですり合わせます。トークン差分表と確認事項表をこの一括確認の提出物として使います。
217
+ デザインシステムが未確立のプロジェクトで初期実装を任された場合は、値ごとに⏸を出すのではなく、実装前にマッピング方針を一括ですり合わせる。トークン差分表と確認事項表をこの一括確認の提出物として使う。
230
218
 
231
219
  - スペース・サイズ・タイポグラフィ: どの範囲を最寄りトークンへ丸め、どこを具体値(px直書き・カスタムトークン)にするかの境界。
232
220
  - カラー: デザイン内の各色をどのセマンティックカラー(`--brand`/`--accent`/`--base`/`--base-2`/`--text`/`--text-2`等)へ割り当てるか。
233
221
  - デザイン画像しか無い場合は、書き出し倍率・想定キャンバス幅の前提もここで確認する。倍率はC0の実測・整合チェックで確定してから提示する。
234
222
 
235
- ユーザー確認が取れない場合は、原則準拠側(最寄りトークンへの丸め・セマンティック割り当て案)を前提として実装プランに明示して進め、完了報告で代替案とともに列挙します(`SKILL.md`「判定記号」の⏸運用を参照)。
223
+ 確認が取れない場合の進め方は`SKILL.md`「判定記号」の⏸の項。
236
224
 
237
225
  ### 提出前セルフチェックへの接続
238
226
 
239
- 実装後、実装プランと実装を1行ずつ照合します(チェック項目は`SKILL.md`の「提出前セルフチェック」を参照)。この照合とルール照合は、サブエージェント/タスク委任機能が使える環境では評価サブエージェントに実行させ、報告を`.lism/review.md`へ保存します([`verification.md`](./verification.md))。
227
+ `SKILL.md`「提出前セルフチェック」で実装プランと実装を照合した時の分類例:
240
228
 
241
229
  | 計画項目 | 実装結果 | 分類 | 対応 |
242
230
  | --- | --- | --- | --- |
@@ -4,7 +4,7 @@
4
4
 
5
5
  共通の考え方:
6
6
 
7
- - セクションの外殻は`Group`(`as="header"`/`as="section"`/`as="footer"`)で意味付けし、サイト領域には`z--*`、ページ固有の領域には`p--*`を付ける([`css-rules.md`](../css-rules.md#独自プレフィックス))。
7
+ - セクションの外殻は`Group`(`as="header"`/`as="section"`/`as="footer"`)で意味付けし、`c--siteHeader`のような何のパーツかを示す独自クラス名を付ける(ページ固有の領域も`c--frontHero`のようにslug等を含めて`c--`で命名する。[`css-rules.md`](../css-rules.md#独自クラスの選び方2分類))。
8
8
  - 「全幅の背景+中央寄せの本文幅」は、外殻`Group`(背景色・縦padding)+`hasGutter`(サイト共通の左右余白)+内側`Wrapper`(コンテンツ幅)の組み合わせで作る。`max-width`をpxで直書きしない。
9
9
  - 縦の並びは`Stack`、横並びは`Cluster`に任せ、余白はすべて`g`/`py`などのトークンPropsで表す。
10
10
  - セクションの高さをデザインpxで固定しない。高さは余白(`py`)とコンテンツが決める。
@@ -16,7 +16,7 @@
16
16
  ```jsx
17
17
  import { Group, Wrapper, Cluster, Link } from 'lism-css/astro';
18
18
 
19
- <Group as="header" className="z--header" bgc="base" py="20" hasGutter>
19
+ <Group as="header" className="c--siteHeader" bgc="base" py="20" hasGutter>
20
20
  <Wrapper contentSize="xl">
21
21
  <Cluster jc="between" g="20">
22
22
  <Link href="/" fw="bold" fz="l">Site Name</Link>
@@ -40,7 +40,7 @@ import { Group, Wrapper, Cluster, Link } from 'lism-css/astro';
40
40
  ```jsx
41
41
  import { Group, Wrapper, Stack, Cluster, Heading, Text } from 'lism-css/astro';
42
42
 
43
- <Group as="section" className="p--frontHero" bgc="base-2" py={['60', null, '80']} hasGutter isContainer>
43
+ <Group as="section" className="c--frontHero" bgc="base-2" py={['60', null, '80']} hasGutter isContainer>
44
44
  <Wrapper contentSize="l">
45
45
  <Stack g="30" ai="center" ta="center">
46
46
  <Heading level="1" fz={['3xl', null, '5xl']}>キャッチコピー</Heading>
@@ -60,7 +60,7 @@ import { Group, Wrapper, Stack, Cluster, Heading, Text } from 'lism-css/astro';
60
60
  ```jsx
61
61
  import { Group, Wrapper, Stack, AutoColumns, Text, Divider } from 'lism-css/astro';
62
62
 
63
- <Group as="footer" className="z--footer" bgc="text" c="base" py="60" hasGutter isContainer>
63
+ <Group as="footer" className="c--siteFooter" bgc="text" c="base" py="60" hasGutter isContainer>
64
64
  <Wrapper contentSize="xl">
65
65
  <Stack g="40">
66
66
  <AutoColumns cols="12rem" g="40">
@@ -82,7 +82,7 @@ import { Group, Wrapper, Stack, AutoColumns, Text, Divider } from 'lism-css/astr
82
82
  ```jsx
83
83
  import { Group, Wrapper, Stack, Heading, Columns } from 'lism-css/astro';
84
84
 
85
- <Group as="section" className="p--frontFeatures" py="70" hasGutter isContainer>
85
+ <Group as="section" className="c--frontFeatures" py="70" hasGutter isContainer>
86
86
  <Wrapper contentSize="l">
87
87
  <Stack g="40">
88
88
  <Heading level="2" fz="2xl" ta="center">Features</Heading>