@lism-css/mcp 0.22.0 → 0.24.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.
Files changed (74) hide show
  1. package/README.ja.md +15 -15
  2. package/README.md +5 -5
  3. package/dist/data/docs-index.json +232 -96
  4. package/dist/data/guides/SKILL.md +162 -224
  5. package/dist/data/guides/antipatterns-layout.md +268 -0
  6. package/dist/data/guides/antipatterns.md +118 -196
  7. package/dist/data/guides/base-styles.md +14 -12
  8. package/dist/data/guides/components-core.md +26 -8
  9. package/dist/data/guides/components-ui.md +28 -24
  10. package/dist/data/guides/css-rules.md +40 -57
  11. package/dist/data/guides/customize.md +121 -37
  12. package/dist/data/guides/naming.md +23 -42
  13. package/dist/data/guides/primitive-class.md +5 -5
  14. package/dist/data/guides/primitives/a--decorator.md +2 -28
  15. package/dist/data/guides/primitives/a--divider.md +1 -52
  16. package/dist/data/guides/primitives/a--icon.md +2 -76
  17. package/dist/data/guides/primitives/a--spacer.md +1 -49
  18. package/dist/data/guides/primitives/l--autoColumns.md +7 -54
  19. package/dist/data/guides/primitives/l--box.md +1 -21
  20. package/dist/data/guides/primitives/l--center.md +6 -39
  21. package/dist/data/guides/primitives/l--cluster.md +6 -26
  22. package/dist/data/guides/primitives/l--columns.md +7 -56
  23. package/dist/data/guides/primitives/l--flex.md +5 -62
  24. package/dist/data/guides/primitives/l--flow.md +11 -72
  25. package/dist/data/guides/primitives/l--frame.md +7 -78
  26. package/dist/data/guides/primitives/l--grid.md +5 -56
  27. package/dist/data/guides/primitives/l--stack.md +5 -44
  28. package/dist/data/guides/primitives/l--switchColumns.md +8 -53
  29. package/dist/data/guides/primitives/l--tileGrid.md +7 -44
  30. package/dist/data/guides/primitives/l--withSide.md +9 -79
  31. package/dist/data/guides/property-class/all-props.md +244 -0
  32. package/dist/data/guides/property-class/bd.md +5 -70
  33. package/dist/data/guides/property-class/hov.md +14 -73
  34. package/dist/data/guides/property-class/max-sz.md +3 -39
  35. package/dist/data/guides/property-class.md +31 -249
  36. package/dist/data/guides/references/authoring.md +246 -0
  37. package/dist/data/guides/references/page-sections.md +99 -0
  38. package/dist/data/guides/references/verification.md +73 -0
  39. package/dist/data/guides/responsive.md +68 -20
  40. package/dist/data/guides/set-class.md +2 -12
  41. package/dist/data/guides/tokens.md +31 -31
  42. package/dist/data/guides/trait-class/has--gutter.md +3 -31
  43. package/dist/data/guides/trait-class/has--mask.md +3 -36
  44. package/dist/data/guides/trait-class/has--snap.md +3 -34
  45. package/dist/data/guides/trait-class/has--transition.md +3 -41
  46. package/dist/data/guides/trait-class/is--boxLink.md +2 -63
  47. package/dist/data/guides/trait-class/is--container.md +2 -29
  48. package/dist/data/guides/trait-class/is--layer.md +1 -57
  49. package/dist/data/guides/trait-class/is--wrapper.md +11 -60
  50. package/dist/data/guides/trait-class.md +8 -8
  51. package/dist/data/guides/utility-class.md +1 -1
  52. package/dist/data/meta.js +4 -3
  53. package/dist/index.js +4 -1
  54. package/dist/lib/load-markdown.d.ts +4 -0
  55. package/dist/lib/load-markdown.js +10 -0
  56. package/dist/lib/markdown-utils.d.ts +1 -1
  57. package/dist/lib/response.d.ts +5 -0
  58. package/dist/lib/response.js +15 -2
  59. package/dist/lib/schemas.d.ts +35 -0
  60. package/dist/lib/schemas.js +13 -0
  61. package/dist/lib/search.d.ts +2 -0
  62. package/dist/lib/search.js +45 -2
  63. package/dist/lib/types.d.ts +5 -21
  64. package/dist/lib/version.d.ts +2 -0
  65. package/dist/lib/version.js +8 -0
  66. package/dist/tools/convert-css.js +38 -15
  67. package/dist/tools/get-component.js +2 -2
  68. package/dist/tools/get-guide.d.ts +2 -0
  69. package/dist/tools/get-guide.js +40 -17
  70. package/dist/tools/get-overview.js +2 -2
  71. package/dist/tools/get-props-system.js +8 -6
  72. package/dist/tools/get-tokens.js +2 -2
  73. package/dist/tools/search-docs.js +13 -7
  74. package/package.json +17 -2
@@ -48,8 +48,9 @@ import { Button } from '@lism-css/ui/astro/Button';
48
48
  **構造:** `Accordion.Root > Accordion.Item > (Accordion.Heading > Accordion.Button) + Accordion.Panel`(`Accordion.Icon` は自動で含まれる)
49
49
 
50
50
  | Prop | 対象 | 型 | デフォルト | 説明 |
51
- |------|------|-----|----------|------|
51
+ | --- | --- | --- | --- | --- |
52
52
  | `allowMultiple` | Root | `boolean` | — | 複数アイテムの同時展開を許可 |
53
+ | `isOpen` | Item / Button / Panel | `boolean` | `false` | アイテムを初期展開。Item・Button・Panel の3つ揃えて指定(Item=`data-opened` 付与、Button=`aria-expanded`、Panel=`hidden` 解除) |
53
54
  | `as` | Heading | `string` | `div` | 見出しのHTMLタグ。`div` 時は `role='heading'` が自動付与。`h2`〜`h6` 指定時は role なし |
54
55
  | `flow` | Panel | `string` | — | パネル内コンテンツ領域(`c--accordion_content`)のフロー余白 |
55
56
 
@@ -70,10 +71,11 @@ import { Button } from '@lism-css/ui/astro/Button';
70
71
  ソース: [Alert/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Alert)
71
72
 
72
73
  短めの文言を目立たせて強調表示するアラートボックス。`type` プリセットによりアイコンとカラーが自動設定される。
74
+ プリセット: `alert`=alert/red, `point`=lightbulb/orange(`tip`も同じ), `warning`=warning/yellow, `check`=check-circle/green, `help`=question/purple, `info`=info/blue, `note`=note/gray。
73
75
 
74
76
  | Prop | 型 | デフォルト | 説明 |
75
- |------|-----|----------|------|
76
- | `type` | `'alert' \| 'point' \| 'warning' \| 'check' \| 'help' \| 'info'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
77
+ | --- | --- | --- | --- |
78
+ | `type` | `'alert' \| 'point' \| 'tip' \| 'warning' \| 'check' \| 'help' \| 'info' \| 'note'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
77
79
  | `keycolor` | `string` | — | キーカラー |
78
80
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
79
81
  | `layout` | `'flex' \| 'withSide'` | `'flex'` | レイアウトプリミティブ |
@@ -91,7 +93,7 @@ import { Button } from '@lism-css/ui/astro/Button';
91
93
  アバター(プロフィール画像)コンポーネント。Frame ベースの円形画像表示。`c--avatar` クラスが付与される。
92
94
 
93
95
  | Prop | 型 | デフォルト | 説明 |
94
- |------|-----|----------|------|
96
+ | --- | --- | --- | --- |
95
97
  | `src` | `string` | — | 画像URL |
96
98
  | `alt` | `string` | — | 代替テキスト |
97
99
  | `size` | `string` | `'1.5em'` | アバターのサイズ |
@@ -108,7 +110,7 @@ import { Button } from '@lism-css/ui/astro/Button';
108
110
  バッジ(ラベル)コンポーネント。`span` 要素としてインライン表示。`c--badge` クラスが付与される。
109
111
 
110
112
  | Prop | 型 | デフォルト | 説明 |
111
- |------|-----|----------|------|
113
+ | --- | --- | --- | --- |
112
114
  | `variant` | `string` | — | バリエーション(`'outline'` 等)。`c--badge--{variant}` クラスが出力 |
113
115
  | `keycolor` | `string` | — | キーカラー |
114
116
 
@@ -124,7 +126,7 @@ import { Button } from '@lism-css/ui/astro/Button';
124
126
  ボタン型リンクコンポーネント。デフォルトで `a` 要素として出力。`c--button` クラスが付与される。
125
127
 
126
128
  | Prop | 型 | デフォルト | 説明 |
127
- |------|-----|----------|------|
129
+ | --- | --- | --- | --- |
128
130
  | `variant` | `string` | — | バリエーション(`'fill'`, `'outline'` 等)。`c--button--{variant}` クラスが出力 |
129
131
  | `keycolor` | `string` | — | キーカラー |
130
132
  | `href` | `string` | — | リンク先URL |
@@ -138,18 +140,18 @@ import { Button } from '@lism-css/ui/astro/Button';
138
140
 
139
141
  ソース: [Callout/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Callout)
140
142
 
141
- 記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される。
143
+ 記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される(プリセット内容は [Alert](#alert) と同一)。
142
144
 
143
145
  | Prop | 型 | デフォルト | 説明 |
144
- |------|-----|----------|------|
145
- | `type` | `'note' \| 'alert' \| 'point' \| 'warning' \| 'check' \| 'help'` | `'note'` | コールアウトタイプ |
146
+ | --- | --- | --- | --- |
147
+ | `type` | `'alert' \| 'point' \| 'tip' \| 'warning' \| 'check' \| 'help' \| 'info' \| 'note'` | `'note'` | コールアウトタイプ |
146
148
  | `keycolor` | `string` | — | キーカラー |
147
149
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
148
150
  | `title` | `string` | — | タイトルテキスト |
149
151
  | `flow` | `string` | `'s'` | コンテンツ部分のフロー余白 |
150
152
 
151
153
  ```jsx
152
- <Callout type='note' title='Important' keycolor='blue'>Important note</Callout>
154
+ <Callout type='note' title='Note'>Supplemental note</Callout>
153
155
  ```
154
156
 
155
157
 
@@ -160,7 +162,7 @@ import { Button } from '@lism-css/ui/astro/Button';
160
162
  チャット風の吹き出しコンポーネント。Grid ベースの会話形式 UI。`c--chat` クラスが付与される。
161
163
 
162
164
  | Prop | 型 | デフォルト | 説明 |
163
- |------|-----|----------|------|
165
+ | --- | --- | --- | --- |
164
166
  | `name` | `string` | — | 発言者の名前 |
165
167
  | `avatar` | `string` | — | アバター画像の src |
166
168
  | `variant` | `'speak' \| 'think'` | `'speak'` | チャットタイプ |
@@ -182,8 +184,9 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
182
184
  **構造:** `Details.Root > Details.Summary > (Details.Title + Details.Icon) + Details.Content`
183
185
 
184
186
  | Prop | 対象 | 型 | デフォルト | 説明 |
185
- |------|------|-----|----------|------|
187
+ | --- | --- | --- | --- | --- |
186
188
  | `as` | Title | `string` | `'span'` | Title の HTML タグ |
189
+ | `open` | Root | `boolean` | — | 初期展開状態(`details` 要素の `open` 属性) |
187
190
  | `--duration` | Root | `string` | — | 展開アニメーションの秒数(style 経由で指定) |
188
191
 
189
192
  ```jsx
@@ -206,7 +209,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
206
209
  **構造:** `Modal.OpenBtn + Modal.Root > Modal.Inner > Modal.Body + Modal.CloseBtn`
207
210
 
208
211
  | Prop | 対象 | 型 | デフォルト | 説明 |
209
- |------|------|-----|----------|------|
212
+ | --- | --- | --- | --- | --- |
210
213
  | `id` | Root | `string` | — | モーダルの ID(必須) |
211
214
  | `modalId` | OpenBtn / CloseBtn | `string` | — | 対象モーダルの ID |
212
215
  | `duration` | Root | `string` | — | アニメーション持続時間。`--duration` 変数として出力 |
@@ -233,11 +236,12 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
233
236
  **構造:** `NavMenu.Root > NavMenu.Item > NavMenu.Link`(`NavMenu.Nest` でネスト可能)
234
237
 
235
238
  | Prop | 対象 | 型 | デフォルト | 説明 |
236
- |------|------|-----|----------|------|
239
+ | --- | --- | --- | --- | --- |
237
240
  | `hovBgc` | Root | `string` | — | ホバー時の背景カラー。`--hov-bgc` 変数として出力 |
238
241
  | `hovC` | Root | `string` | — | ホバー時のテキストカラー。`--hov-c` 変数として出力 |
239
242
  | `itemP` | Root | `string` | — | 各アイテムのパディング。`--_item-p` 変数として出力 |
240
- | `href` | Link | `string` | — | リンク先URL。指定ありで `a` 要素、なしで `span` 要素 |
243
+ | `href` | Link | `string` | — | リンク先URL(Link は常に `a` 要素として出力) |
244
+ | `hov` | Link | `string` | `-bgc` | ホバー時のスタイル。デフォルトで背景色が変化 |
241
245
 
242
246
  ```jsx
243
247
  <NavMenu.Root>
@@ -260,10 +264,11 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
260
264
  **構造:** `Tabs.Root > Tabs.Item > (Tabs.Tab + Tabs.Panel)`(`Tabs.List` も利用可能)
261
265
 
262
266
  | Prop | 対象 | 型 | デフォルト | 説明 |
263
- |------|------|-----|----------|------|
267
+ | --- | --- | --- | --- | --- |
264
268
  | `tabId` | Root | `string` | — | タブを特定するための ID 文字列 |
265
269
  | `defaultIndex` | Root | `number` | `1` | 初期アクティブタブ(1始まり) |
266
270
  | `listProps` | Root | `object` | — | タブボタンリスト要素へ渡す props |
271
+ | `variant` | Root | `string` | — | バリエーション。`c--tabs--{variant}` クラスが出力 |
267
272
 
268
273
  ```jsx
269
274
  <Tabs.Root>
@@ -286,7 +291,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
286
291
  セクション間の波型などの装飾的な区切り要素。SVG ベースの形状で区切りを表現。
287
292
 
288
293
  | Prop | 型 | デフォルト | 説明 |
289
- |------|-----|----------|------|
294
+ | --- | --- | --- | --- |
290
295
  | `viewBox` | `string` | — | SVG の viewBox |
291
296
  | `level` | `number` | `5` | シェイプの高さレベル。`0` で非表示 |
292
297
  | `flip` | `'X' \| 'Y' \| 'XY'` | — | 反転方向。`data-flip` 属性として出力 |
@@ -309,7 +314,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
309
314
  ダミーテキストを生成するコンポーネント。プレビューやテスト用。複数の言語とテキスト長に対応。
310
315
 
311
316
  | Prop | 型 | デフォルト | 説明 |
312
- |------|-----|----------|------|
317
+ | --- | --- | --- | --- |
313
318
  | `lang` | `'ja' \| 'en' \| 'ar'` | `'en'` | テキストの言語 |
314
319
  | `length` | `'xs' \| 's' \| 'm' \| 'l' \| 'xl' \| 'codes'` | `'m'` | テキストの長さ。`'codes'` は `b`, `i`, `a`, `code` 要素を含むテキスト |
315
320
  | `pre` | `string` | — | テキストの前に表示する文字列 |
@@ -327,8 +332,8 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
327
332
  コンポーネント名は `import` するときと同じ PascalCase で指定します。
328
333
 
329
334
  ```bash
330
- # 初期設定(framework、出力先ディレクトリを対話的に設定)
331
- npx lism-cli ui init
335
+ # 初期設定(lism.config.js が無い場合に新規生成。framework 等を対話的に設定)
336
+ npx lism-cli init
332
337
 
333
338
  # コンポーネントを追加
334
339
  npx lism-cli ui add Button Modal
@@ -339,14 +344,13 @@ npx lism-cli ui add --all # 全コンポーネントを追加
339
344
  npx lism-cli ui list
340
345
  ```
341
346
 
342
- `ui init` で生成される `lism.config.js` の `cli` セクション:
347
+ `init` で生成される `lism.config.js` の `ui` セクション:
343
348
 
344
349
  ```js
345
350
  export default {
346
- cli: {
351
+ ui: {
347
352
  framework: 'react',
348
- componentsDir: 'src/components/ui',
349
- helperDir: 'src/components/ui/_helper',
353
+ dir: 'src/components/ui', // helper は常に {dir}/_helper に配置される
350
354
  },
351
355
  };
352
356
  ```
@@ -3,7 +3,7 @@
3
3
  ## TOC
4
4
 
5
5
  - [CSS Layer 構造](#css-layer-構造)
6
- - [プレフィックスとクラス分類](#プレフィックスとクラス分類)
6
+ - [クラス分類とプレフィックス](#クラス分類とプレフィックス)
7
7
  - [Component Class(`c--`)](#component-classc--)
8
8
  - [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
9
9
  - [独自プレフィックス](#独自プレフィックス)
@@ -34,7 +34,6 @@ Settings(トークン定義)
34
34
  → Property Class(レイヤー外 — 最も詳細度が高い)
35
35
  ```
36
36
 
37
-
38
37
  ## クラス分類とプレフィックス
39
38
 
40
39
  [詳細](https://lism-css.com/docs/naming.md)
@@ -42,7 +41,7 @@ Settings(トークン定義)
42
41
  Lism CSSで定義されるクラスは、その役割とレイヤーの所属が決まっており、その分類によってプレフィックスが定められています。
43
42
 
44
43
  | 分類 | 役割 | プレフィックス | 例 |
45
- |---|---|---|---|
44
+ | --- | --- | --- | --- |
46
45
  | Set Class | ベーススタイル上書き・変数提供 | `set--` | `set--plain`, `set--revert`, `set--hov`, `set--bxsh` |
47
46
  | Layout Primitive | レイアウトの構成単位となる Primitive | `l--` | `l--grid`, `l--flex`, `l--stack` |
48
47
  | Atomic Primitive | レイアウトの最小単位となる Primitive | `a--` | `a--icon`, `a--divider` |
@@ -53,20 +52,18 @@ Lism CSSで定義されるクラスは、その役割とレイヤーの所属が
53
52
  | Property Class | 単一プロパティの制御 | `-` | `-fz:l`, `-p:20`, `-d:none` |
54
53
 
55
54
  **併用ルール:**
55
+
56
56
  - `l--` と `c--` は併用OK(例: `<div class="l--flex c--nav">`)
57
57
  - 同カテゴリ内の Primitive 併用は不可(例: `l--flex` と `l--grid`、`a--icon` と `a--divider` は同要素に付けない)
58
58
  - `l--` × `a--` は非推奨(役割的に同居しない想定)
59
59
  - `is--` / `has--` 同士は併用OK(Trait は複数併用できる)
60
60
  - `is--` / `has--` × `l--` / `a--` も併用OK
61
- - `c--` Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし以下は許容:
62
- - Block と自身の Modifier: `.c--button.c--button--outline`
63
- - Block と他 Block の Element: `.c--xxx.c--yyy_elem`
64
- - 子要素: `c--card_header`, `c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
61
+ - `c--` 同士の併用ルールとBEM構造は[Component Class(`c--`)](#component-classc--)を参照
65
62
 
66
63
  **`is--` と `has--` の判定軸:**
67
64
 
68
65
  | | `is--` | `has--` |
69
- |---|---|---|
66
+ | --- | --- | --- |
70
67
  | 意味 | 〜である(役割・存在の宣言) | 〜を持つ(機能の付与) |
71
68
  | CSS 変数 | 必須ではない | 必須(カスタマイズポイントを提供) |
72
69
 
@@ -78,7 +75,7 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
78
75
  ```
79
76
 
80
77
  | # | 区分 | 例 |
81
- |---|---|---|
78
+ | --- | --- | --- |
82
79
  | 1 | 独自クラス(`customClass`) | `z--header`, `hoge` |
83
80
  | 2 | Component(`c--`) | `c--box`, `c--box--primary` |
84
81
  | 3 | Atomic Primitive(`a--`) | `a--icon`, `a--divider` |
@@ -99,7 +96,6 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
99
96
 
100
97
  なお、`class` 属性内の並び順は CSS の適用結果(詳細度・カスケード順)には影響しません。この順序はあくまで可読性と一貫性のための整理です。
101
98
 
102
-
103
99
  ## Component Class(`c--`)
104
100
 
105
101
  `c--` プレフィックスで定義する **Component クラス** は、Primitive を組み合わせて作られた具体的な UI 部品です。`@layer lism-component` に配置され、コアの `lism-css` には含まれず、`@lism-css/ui` パッケージやユーザー定義として提供されます。
@@ -107,7 +103,7 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
107
103
  `c--` クラスは BEM 構造(Block / Modifier / Element)を持つことができ、それぞれ次の形式で定義します。
108
104
 
109
105
  | 分類 | 形式 | 例 |
110
- |---|---|---|
106
+ | --- | --- | --- |
111
107
  | Block | `c--{name}` | `c--button`, `c--card` |
112
108
  | Modifier | `c--{name}--{modifier}` | `c--button--outline` |
113
109
  | Element | `c--{name}_{element}` | `c--card_header`, `c--card_body` |
@@ -121,33 +117,17 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
121
117
 
122
118
  `c--` を使った独自コンポーネントを使う場合でも、他の Primitive クラス(`l--`, `is--`)や Property Class(`-{prop}:{value}`)との組み合わせを前提とした設計にすることで CSS の記述量を削減できます。`c--` クラスにスタイルが全くなく、HTML 側での可視性を高める名前付けのためだけに利用しても構いません。
123
119
 
124
-
125
120
  ### 作成例
126
121
 
127
- `l--stack` と併用する前提でのカスタムクラス例:
128
-
129
- ```css
130
- @layer lism-component {
131
- .c--myCard {
132
- gap: var(--s20);
133
- padding: var(--s30);
134
- border-radius: var(--bdrs--20);
135
- box-shadow: var(--bxsh--20);
136
- border: 1px solid currentColor;
137
- /* ... */
138
- }
139
- }
140
- ```
122
+ `c--*`は意味名として残し、レイアウトと単一プロパティ値はPrimitive/Property Classへ寄せます。CSSへ残すのは、擬似要素・子孫セレクタ・状態セレクタなど、Props/Property Classで表現できないものだけです。
141
123
 
142
124
  ```html
143
- <div class="c--myCard l--stack">
144
- ...
145
- </div>
125
+ <!-- HTMLで書く場合も、意味名 + Primitive + Property Class を優先 -->
126
+ <div class="c--myCard l--stack -g:20 -p:30 -bdrs:20 -bxsh:20 -bd">...</div>
146
127
  ```
147
128
 
148
- 素の HTML サイトではこのように `c--` クラスに CSS を書いてスタイリングしても問題ありませんが、React などでコンポーネントを作成できる場合は、特別な理由がない限り Property Class を活用してください。
149
-
150
129
  ```jsx
130
+ // React/AstroコンポーネントではPropsを優先
151
131
  export default function MyCard(props) {
152
132
  return <Stack className="c--myCard" g="20" p="30" bdrs="20" bxsh="20" bd {...props} />;
153
133
  }
@@ -155,12 +135,13 @@ export default function MyCard(props) {
155
135
 
156
136
  ```css
157
137
  @layer lism-component {
158
- .c--myCard {
159
- /* 複雑なスタイルがあれば css で書く */
138
+ .c--myCard::before {
139
+ /* 擬似要素など、Props/Property Classで表せないものだけを書く */
160
140
  }
161
141
  }
162
142
  ```
163
143
 
144
+ CSSが空になる場合は、CSSファイル側に`.c--myCard {}`を書かず、マークアップ上の意味名として`c--myCard`だけ残して構いません。
164
145
 
165
146
  ## カスタムCSS を追加する場合
166
147
 
@@ -169,53 +150,39 @@ export default function MyCard(props) {
169
150
  ```css
170
151
  /* カスタムコンポーネント → lism-component に追加 */
171
152
  @layer lism-component {
172
- .c--my-card {
173
- border: 1px solid var(--brand);
174
- border-radius: var(--bdrs--20);
175
- padding: var(--s30);
153
+ .c--myCard[data-is-active]::before {
154
+ border-color: var(--brand);
176
155
  }
177
156
  }
178
157
 
179
158
  /* ベーススタイルの拡張 → lism-base に追加 */
180
159
  @layer lism-base {
181
- .set--my-theme {
160
+ .set--myTheme {
182
161
  --brand: #c00;
183
162
  }
184
163
  }
185
164
  ```
186
165
 
187
- カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。
166
+ カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。ただし、`padding`/`border-radius`/`font-size`/`color`などProperty Class/Propsへ移せる宣言は、CSSに書く前にマークアップ側へ移します(NG→OK例は[antipatterns.md](./antipatterns.md#property-class-で書けるのに-css-で書く)を参照)。
188
167
 
189
- ```css
190
- /* NG */
191
- .c--my-card { padding: 24px; border-radius: 8px; }
192
-
193
- /* OK */
194
- .c--my-card { padding: var(--s30); border-radius: var(--bdrs--20); }
195
- ```
196
-
197
- ただし、明確にその数値に意図がある場合は、生のCSS値を使用しても構いません。
168
+ 明確にその数値に意図があり、トークン化・丸め・Property Class化ができない場合だけ、生のCSS値を例外として使用できます。その場合は実装プランに理由を残します。
198
169
 
199
170
  **レイヤー外に書く場合:**
200
171
  `@layer` の外(レイヤーなし)でカスタムCSSを書くのは、**Property Class(`-{prop}:{value}`)を拡張する場合のみ**としてください。それ以外のカスタムスタイルは必ずいずれかの `@layer` 内に記述します。
201
172
 
202
173
  ```css
203
- /* OK: Property Class の拡張はレイヤー外 */
174
+ /* Property Class の拡張のみレイヤー外に書ける */
204
175
  .-myProp\:myValue { ... }
205
-
206
- /* NG: コンポーネントやユーティリティをレイヤー外に書かない */
207
- .c--my-card { ... }
208
176
  ```
209
177
 
210
-
211
- ### 独自プレフィックス
178
+ ## 独自プレフィックス
212
179
 
213
180
  Lism CSS の既存プレフィックス(`set--` / `is--` / `has--` / `l--` / `a--` / `c--` / `u--` / `-`)のどれにも該当しないクラスは、独自プレフィックスを付けても、プレフィックスなしで命名しても構いません。
214
181
 
215
182
  代表的な例:
216
183
 
217
184
  | 分類 | 形式 | 例 |
218
- |---|---|---|
185
+ | --- | --- | --- |
219
186
  | ゾーニング(サイトの大まかな領域) | `z--{zoneName}` または `{zoneName}` | `z--header`, `z--main`, `z--sidebar`, `z--footer` |
220
187
  | ページ分類 | `p--{type}-{id\|slug}` または `{slug}Page` | `p--front`, `p--page--{slug}` |
221
188
 
@@ -223,11 +190,27 @@ Lism CSS の既存プレフィックス(`set--` / `is--` / `has--` / `l--` / `
223
190
 
224
191
  ```css
225
192
  @layer lism-custom {
226
- .z--header { /* ... */ }
227
- .p--front { /* ... */ }
193
+ .z--header {
194
+ /* ... */
195
+ }
196
+ .p--front {
197
+ /* ... */
198
+ }
228
199
  }
229
200
  ```
230
201
 
202
+ ### `z--`/`p--`/`c--`の使い分け
203
+
204
+ | 用途 | 推奨 | 理由 |
205
+ | --- | --- | --- |
206
+ | 再利用可能なUI部品 | `c--featureCard` | componentとして再利用され、Block/Element/Modifier構造を持てる |
207
+ | サイトの大まかな領域 | `z--header`/`z--main`/`z--footer` | 再利用UIではなくゾーニングなので`c--`にしない |
208
+ | ページ固有の領域 | `p--frontHero`/`p--postBody` | ページ依存の見た目をcomponent命名から分離する |
209
+ | 外部JS・CMS・E2Eが参照するclass | 既存名を維持、または⏸ | 外部契約なのでrenameはユーザー確認が必要 |
210
+
211
+ `c--header`や`c--sidebar`のような命名は、UI部品として再利用する意図がある場合だけ使います。サイト構造の領域名なら`z--header`、ページ限定なら`p--*`を優先してください。
212
+
213
+ 公開API、CMS出力、外部JS、E2Eセレクタ、ドキュメントで案内済みのclass名を変える場合は、内部参照を全更新できる場合でも⏸としてユーザー確認します。CSSだけrenameしてJS/テスト/HTML生成側を漏らさないでください。
231
214
 
232
215
  ## CSS の配置場所
233
216