@lism-css/mcp 0.23.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 (73) hide show
  1. package/README.ja.md +15 -15
  2. package/README.md +5 -5
  3. package/dist/data/docs-index.json +51 -76
  4. package/dist/data/guides/SKILL.md +162 -229
  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 +10 -9
  8. package/dist/data/guides/components-core.md +26 -8
  9. package/dist/data/guides/components-ui.md +21 -21
  10. package/dist/data/guides/css-rules.md +40 -57
  11. package/dist/data/guides/customize.md +7 -5
  12. package/dist/data/guides/naming.md +22 -41
  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 +44 -15
  40. package/dist/data/guides/set-class.md +2 -12
  41. package/dist/data/guides/tokens.md +15 -15
  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 +3 -56
  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/response.d.ts +5 -0
  57. package/dist/lib/response.js +15 -2
  58. package/dist/lib/schemas.d.ts +35 -0
  59. package/dist/lib/schemas.js +13 -0
  60. package/dist/lib/search.d.ts +2 -0
  61. package/dist/lib/search.js +45 -2
  62. package/dist/lib/types.d.ts +5 -21
  63. package/dist/lib/version.d.ts +2 -0
  64. package/dist/lib/version.js +8 -0
  65. package/dist/tools/convert-css.js +37 -14
  66. package/dist/tools/get-component.js +2 -2
  67. package/dist/tools/get-guide.d.ts +2 -0
  68. package/dist/tools/get-guide.js +40 -17
  69. package/dist/tools/get-overview.js +2 -2
  70. package/dist/tools/get-props-system.js +8 -6
  71. package/dist/tools/get-tokens.js +2 -2
  72. package/dist/tools/search-docs.js +13 -7
  73. package/package.json +17 -2
@@ -48,7 +48,7 @@ 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
53
  | `isOpen` | Item / Button / Panel | `boolean` | `false` | アイテムを初期展開。Item・Button・Panel の3つ揃えて指定(Item=`data-opened` 付与、Button=`aria-expanded`、Panel=`hidden` 解除) |
54
54
  | `as` | Heading | `string` | `div` | 見出しのHTMLタグ。`div` 時は `role='heading'` が自動付与。`h2`〜`h6` 指定時は role なし |
@@ -74,7 +74,7 @@ import { Button } from '@lism-css/ui/astro/Button';
74
74
  プリセット: `alert`=alert/red, `point`=lightbulb/orange(`tip`も同じ), `warning`=warning/yellow, `check`=check-circle/green, `help`=question/purple, `info`=info/blue, `note`=note/gray。
75
75
 
76
76
  | Prop | 型 | デフォルト | 説明 |
77
- |------|-----|----------|------|
77
+ | --- | --- | --- | --- |
78
78
  | `type` | `'alert' \| 'point' \| 'tip' \| 'warning' \| 'check' \| 'help' \| 'info' \| 'note'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
79
79
  | `keycolor` | `string` | — | キーカラー |
80
80
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
@@ -93,7 +93,7 @@ import { Button } from '@lism-css/ui/astro/Button';
93
93
  アバター(プロフィール画像)コンポーネント。Frame ベースの円形画像表示。`c--avatar` クラスが付与される。
94
94
 
95
95
  | Prop | 型 | デフォルト | 説明 |
96
- |------|-----|----------|------|
96
+ | --- | --- | --- | --- |
97
97
  | `src` | `string` | — | 画像URL |
98
98
  | `alt` | `string` | — | 代替テキスト |
99
99
  | `size` | `string` | `'1.5em'` | アバターのサイズ |
@@ -110,7 +110,7 @@ import { Button } from '@lism-css/ui/astro/Button';
110
110
  バッジ(ラベル)コンポーネント。`span` 要素としてインライン表示。`c--badge` クラスが付与される。
111
111
 
112
112
  | Prop | 型 | デフォルト | 説明 |
113
- |------|-----|----------|------|
113
+ | --- | --- | --- | --- |
114
114
  | `variant` | `string` | — | バリエーション(`'outline'` 等)。`c--badge--{variant}` クラスが出力 |
115
115
  | `keycolor` | `string` | — | キーカラー |
116
116
 
@@ -126,7 +126,7 @@ import { Button } from '@lism-css/ui/astro/Button';
126
126
  ボタン型リンクコンポーネント。デフォルトで `a` 要素として出力。`c--button` クラスが付与される。
127
127
 
128
128
  | Prop | 型 | デフォルト | 説明 |
129
- |------|-----|----------|------|
129
+ | --- | --- | --- | --- |
130
130
  | `variant` | `string` | — | バリエーション(`'fill'`, `'outline'` 等)。`c--button--{variant}` クラスが出力 |
131
131
  | `keycolor` | `string` | — | キーカラー |
132
132
  | `href` | `string` | — | リンク先URL |
@@ -140,11 +140,10 @@ import { Button } from '@lism-css/ui/astro/Button';
140
140
 
141
141
  ソース: [Callout/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Callout)
142
142
 
143
- 記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される。
144
- プリセット: `alert`=alert/red, `point`=lightbulb/orange(`tip`も同じ), `warning`=warning/yellow, `check`=check-circle/green, `help`=question/purple, `info`=info/blue, `note`=note/gray。
143
+ 記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される(プリセット内容は [Alert](#alert) と同一)。
145
144
 
146
145
  | Prop | 型 | デフォルト | 説明 |
147
- |------|-----|----------|------|
146
+ | --- | --- | --- | --- |
148
147
  | `type` | `'alert' \| 'point' \| 'tip' \| 'warning' \| 'check' \| 'help' \| 'info' \| 'note'` | `'note'` | コールアウトタイプ |
149
148
  | `keycolor` | `string` | — | キーカラー |
150
149
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
@@ -163,7 +162,7 @@ import { Button } from '@lism-css/ui/astro/Button';
163
162
  チャット風の吹き出しコンポーネント。Grid ベースの会話形式 UI。`c--chat` クラスが付与される。
164
163
 
165
164
  | Prop | 型 | デフォルト | 説明 |
166
- |------|-----|----------|------|
165
+ | --- | --- | --- | --- |
167
166
  | `name` | `string` | — | 発言者の名前 |
168
167
  | `avatar` | `string` | — | アバター画像の src |
169
168
  | `variant` | `'speak' \| 'think'` | `'speak'` | チャットタイプ |
@@ -185,8 +184,9 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
185
184
  **構造:** `Details.Root > Details.Summary > (Details.Title + Details.Icon) + Details.Content`
186
185
 
187
186
  | Prop | 対象 | 型 | デフォルト | 説明 |
188
- |------|------|-----|----------|------|
187
+ | --- | --- | --- | --- | --- |
189
188
  | `as` | Title | `string` | `'span'` | Title の HTML タグ |
189
+ | `open` | Root | `boolean` | — | 初期展開状態(`details` 要素の `open` 属性) |
190
190
  | `--duration` | Root | `string` | — | 展開アニメーションの秒数(style 経由で指定) |
191
191
 
192
192
  ```jsx
@@ -209,7 +209,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
209
209
  **構造:** `Modal.OpenBtn + Modal.Root > Modal.Inner > Modal.Body + Modal.CloseBtn`
210
210
 
211
211
  | Prop | 対象 | 型 | デフォルト | 説明 |
212
- |------|------|-----|----------|------|
212
+ | --- | --- | --- | --- | --- |
213
213
  | `id` | Root | `string` | — | モーダルの ID(必須) |
214
214
  | `modalId` | OpenBtn / CloseBtn | `string` | — | 対象モーダルの ID |
215
215
  | `duration` | Root | `string` | — | アニメーション持続時間。`--duration` 変数として出力 |
@@ -236,7 +236,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
236
236
  **構造:** `NavMenu.Root > NavMenu.Item > NavMenu.Link`(`NavMenu.Nest` でネスト可能)
237
237
 
238
238
  | Prop | 対象 | 型 | デフォルト | 説明 |
239
- |------|------|-----|----------|------|
239
+ | --- | --- | --- | --- | --- |
240
240
  | `hovBgc` | Root | `string` | — | ホバー時の背景カラー。`--hov-bgc` 変数として出力 |
241
241
  | `hovC` | Root | `string` | — | ホバー時のテキストカラー。`--hov-c` 変数として出力 |
242
242
  | `itemP` | Root | `string` | — | 各アイテムのパディング。`--_item-p` 変数として出力 |
@@ -264,10 +264,11 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
264
264
  **構造:** `Tabs.Root > Tabs.Item > (Tabs.Tab + Tabs.Panel)`(`Tabs.List` も利用可能)
265
265
 
266
266
  | Prop | 対象 | 型 | デフォルト | 説明 |
267
- |------|------|-----|----------|------|
267
+ | --- | --- | --- | --- | --- |
268
268
  | `tabId` | Root | `string` | — | タブを特定するための ID 文字列 |
269
269
  | `defaultIndex` | Root | `number` | `1` | 初期アクティブタブ(1始まり) |
270
270
  | `listProps` | Root | `object` | — | タブボタンリスト要素へ渡す props |
271
+ | `variant` | Root | `string` | — | バリエーション。`c--tabs--{variant}` クラスが出力 |
271
272
 
272
273
  ```jsx
273
274
  <Tabs.Root>
@@ -290,7 +291,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
290
291
  セクション間の波型などの装飾的な区切り要素。SVG ベースの形状で区切りを表現。
291
292
 
292
293
  | Prop | 型 | デフォルト | 説明 |
293
- |------|-----|----------|------|
294
+ | --- | --- | --- | --- |
294
295
  | `viewBox` | `string` | — | SVG の viewBox |
295
296
  | `level` | `number` | `5` | シェイプの高さレベル。`0` で非表示 |
296
297
  | `flip` | `'X' \| 'Y' \| 'XY'` | — | 反転方向。`data-flip` 属性として出力 |
@@ -313,7 +314,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
313
314
  ダミーテキストを生成するコンポーネント。プレビューやテスト用。複数の言語とテキスト長に対応。
314
315
 
315
316
  | Prop | 型 | デフォルト | 説明 |
316
- |------|-----|----------|------|
317
+ | --- | --- | --- | --- |
317
318
  | `lang` | `'ja' \| 'en' \| 'ar'` | `'en'` | テキストの言語 |
318
319
  | `length` | `'xs' \| 's' \| 'm' \| 'l' \| 'xl' \| 'codes'` | `'m'` | テキストの長さ。`'codes'` は `b`, `i`, `a`, `code` 要素を含むテキスト |
319
320
  | `pre` | `string` | — | テキストの前に表示する文字列 |
@@ -331,8 +332,8 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
331
332
  コンポーネント名は `import` するときと同じ PascalCase で指定します。
332
333
 
333
334
  ```bash
334
- # 初期設定(framework、出力先ディレクトリを対話的に設定)
335
- npx lism-cli ui init
335
+ # 初期設定(lism.config.js が無い場合に新規生成。framework 等を対話的に設定)
336
+ npx lism-cli init
336
337
 
337
338
  # コンポーネントを追加
338
339
  npx lism-cli ui add Button Modal
@@ -343,14 +344,13 @@ npx lism-cli ui add --all # 全コンポーネントを追加
343
344
  npx lism-cli ui list
344
345
  ```
345
346
 
346
- `ui init` で生成される `lism.config.js` の `cli` セクション:
347
+ `init` で生成される `lism.config.js` の `ui` セクション:
347
348
 
348
349
  ```js
349
350
  export default {
350
- cli: {
351
+ ui: {
351
352
  framework: 'react',
352
- componentsDir: 'src/components/ui',
353
- helperDir: 'src/components/ui/_helper',
353
+ dir: 'src/components/ui', // helper は常に {dir}/_helper に配置される
354
354
  },
355
355
  };
356
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
 
@@ -44,7 +44,7 @@ import 'lism-css/main_no_layer.css';
44
44
  ### 上書き可能な変数
45
45
 
46
46
  | 変数 | 用途 | デフォルト |
47
- |------|------|-----------|
47
+ | --- | --- | --- |
48
48
  | `$breakpoints` | ブレイクポイント数値の定義(`0` は無効=クエリを出力しない) | `('xs': 0, 'sm': '480px', 'md': '800px', 'lg': '1120px', 'xl': 0)` |
49
49
  | `$is_container_query` | コンテナクエリで出力するか(`1` = container query, `0` = media query) | `1` |
50
50
  | `$default_important` | Property Class にデフォルトで `!important` を付与するか | `0` |
@@ -102,7 +102,9 @@ SCSS を直接読み込む構成では、コンパイル時に `lism-css` 本体
102
102
 
103
103
  ## `lism.config.js` でのカスタマイズ
104
104
 
105
- プロジェクトのルート直下に `lism.config.js`(または `lism.config.mjs`)を置くことで、**コンポーネントの挙動**(受け付ける props の値や、出力されるクラス名)をカスタマイズできます。
105
+ プロジェクトのルート直下に `lism.config.js`(または `lism.config.ts` / `lism.config.mjs`)を置くことで、**コンポーネントの挙動**(受け付ける props の値や、出力されるクラス名)をカスタマイズできます。
106
+
107
+ 設定ファイルの型チェック・補完には `lism-css/config-types` の `LismConfig` 型を使います。`.ts` は `export default { ... } satisfies LismConfig`、`.js` は `/** @type {import('lism-css/config-types').LismConfig} */` を付けると、キー名の typo や値の形をエディタが検出します(コンポーネント側の prop/trait を解禁する生成物 `lism-env.d.ts` とは別物)。
106
108
 
107
109
  ### Vite / Astro プラグインの登録(推奨セットアップ)
108
110
 
@@ -138,7 +140,7 @@ export default defineConfig({
138
140
  - **動的CSSビルド**: `import 'lism-css/main.css'` 等を捕捉し、`lism.config.js` を反映済みの CSS をその場で生成する(props / tokens を追加すると CSS に自動反映される)
139
141
  - **型の自動生成**: 有効化したブレイクポイント・追加した props / traits を反映した `lism-env.d.ts` を起動時に自動生成する
140
142
 
141
- `lism.config.js` はプロジェクトルートから `lism.config.js` → `lism.config.mjs` の順で自動検出します。別の場所に置く場合は `configPath` で指定できます。
143
+ 設定ファイルはプロジェクトルートから `lism.config.ts` `lism.config.mjs` → `lism.config.js` の順で自動検出します。別の場所に置く場合は `configPath` で指定できます。
142
144
 
143
145
  ```js
144
146
  // Vite
@@ -240,7 +242,7 @@ export default {
240
242
  これによってコンポーネント側で次のような挙動が追加されます:
241
243
 
242
244
  | 入力 | 出力されるクラス |
243
- |------|----------------|
245
+ | --- | --- |
244
246
  | `ta="justify"` | `-ta:justify` |
245
247
  | `p="box"` | `-p:box` |
246
248
  | `filter="blur"` | `-filter:blur` |
@@ -254,7 +256,7 @@ export default {
254
256
 
255
257
  ### 追加した prop / trait の型解禁
256
258
 
257
- 統合プラグイン(型自動生成が有効)を使っている場合、`lism.config.js` で追加した **prop / trait も `lism-env.d.ts` 経由で型側に自動解禁**されます(`CustomPropRegistry` / `CustomTraitRegistry` の拡張として出力)。そのため上記の `<Box filter="blur" ... isHoge>` のような新規 prop / trait も、エディタや `astro check` で型エラーになりません。手書きの型拡張は不要です(`lism-env.d.ts` は git にコミットしてください)。
259
+ 統合プラグイン(型自動生成が有効)を使っている場合、`lism.config.js` で追加した **prop / trait も `lism-env.d.ts` 経由で型側に自動解禁**されます(`CustomPropRegistry` / `CustomTraitRegistry` の拡張として出力)。そのため上記の `<Box filter="blur" ... isHoge>` のような新規 prop / trait も、エディタや `astro check` で型エラーになりません。手書きの型拡張は不要です。
258
260
 
259
261
  なお、既存 prop への値追加(`ta="justify"` 等)はもともと任意の文字列を受け付けるため、型エラーにはなりません(ただし補完候補には出ません)。
260
262
 
@@ -18,7 +18,7 @@
18
18
  ### トークン変数
19
19
 
20
20
  | 種類 | 形式 | 例 |
21
- |------|------|-----|
21
+ | --- | --- | --- |
22
22
  | 基本 | `--{prop}--{token}` | `--fz--l`, `--bdrs--20`, `--bxsh--10`, `--sz--s` |
23
23
  | カラー | `--{color}` | `--brand`, `--text`, `--text-2`, `--red` |
24
24
  | 余白 | `--s{Token}` | `--s10`, `--s40` |
@@ -26,7 +26,7 @@
26
26
  トークンのバリエーション:
27
27
 
28
28
  | 表記 | 条件 | 例 |
29
- |------|------|-----|
29
+ | --- | --- | --- |
30
30
  | `s`, `m`, `l`, `xl`... | ベース値を中心に大小の段階を示す | `--fz--s`, `--fz--l` |
31
31
  | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--lh--base` |
32
32
  | `10`, `20`, `30`... | `0`(`none`)基準で段階的に増加 | `--bdrs--20`, `--bxsh--30` |
@@ -38,45 +38,28 @@
38
38
  ### Property Class 用の変数
39
39
 
40
40
  | 形式 | 説明 | 例 |
41
- |------|------|-----|
41
+ | --- | --- | --- |
42
42
  | `--{prop}` | クラスの `{prop}` 部分と同じ省略名 | `--p`, `--bgc`, `--bdrs`, `--m` |
43
43
  | `--{prop}_{bp}` | ブレークポイント値 | `--p_sm`, `--mx_md` |
44
44
 
45
45
  ### その他の変数
46
46
 
47
47
  | 形式 | 用途 | 例 |
48
- |------|------|-----|
48
+ | --- | --- | --- |
49
49
  | `--{target}-{prop}` | 要素・クラスに対するプロパティ(`:root`で上書き可) | `--link-td`, `--headings-ff` |
50
50
  | `--{propName}` | クラス自身の主要機能を制御する変数。要素側で値が初期化され、`:root` からは初期値の定義ができないもの | `--sideW`, `--mainW` |
51
51
  | `--_{item}-{propName}` | `c--` の子要素プロパティ | `--_icon-size` |
52
52
  | `--_{varName}` | 状態管理用の内部変数 | `--_isHov`, `--_notHov` |
53
53
 
54
-
55
54
  ## クラスの命名規則
56
55
 
57
- プレフィックスとクラス分類の対応:
58
-
59
- - Component: `c--`
60
- - Atomic Primitives: `a--`
61
- - Layout Primitives: `l--`
62
- - Trait(役割宣言): `is--`
63
- - Trait(機能付与): `has--`
64
- - Set Class: `set--`
65
- - Utility Class: `u--`
66
-
67
- プレフィックスに続く名称は camelCase(例: `c--myComponent`)。
56
+ クラス分類ごとのプレフィックス(`c--`/`a--`/`l--`/`is--`/`has--`/`set--`/`u--`)と各分類の責務・所属レイヤーは、[css-rules.md](./css-rules.md#クラス分類とプレフィックス)の分類表を正本とします。
68
57
 
69
- **使い分けの判断軸:**
58
+ プレフィックスに続く名称は camelCase(例: `c--myComponent`)。`is--`/`has--`/`set--`/`u--`にも同じ規則が適用されます。
70
59
 
71
- | プレフィックス | 責務 | 代表例 |
72
- |---|---|---|
73
- | `set--` | HTML 要素の基礎スタイリング / 変数セット | `set--plain`, `set--revert`, `set--hov`, `set--bxsh` |
74
- | `is--` | 〜である(役割・存在の宣言)。CSS 変数は必須ではない | `is--container`, `is--wrapper`, `is--layer` |
75
- | `has--` | 〜を持つ(単一機能 trait の付与)。CSS 変数でカスタマイズ可 | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
76
- | `u--` | 装飾的効果(単独 or 子要素の装飾) | `u--trim`, `u--cbox`, `u--divide`, `u--enclose` |
60
+ ### `c--*`の命名
77
61
 
78
- - `set--` は `lism-base` 層で HTML 要素の基礎スタイル・変数を提供するもの。
79
- - `is--` / `has--` は `lism-trait` 層に属する。
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#クラス名の命名ミス)を参照)。
80
63
 
81
64
  Property Class の形式:
82
65
 
@@ -85,7 +68,6 @@ Property Class の形式:
85
68
  - ブレークポイント値を受け取る: `-{prop}_{bp}`
86
69
  - 修飾子 + Property Class 合成: `-{modifier}:-{prop}`(例: `-hov:-c` は `-c` の hover バリアント)
87
70
 
88
-
89
71
  ## `{prop}` の省略ルール
90
72
 
91
73
  基本は [Emmet](https://docs.emmet.io/cheat-sheet/) 準拠。
@@ -97,15 +79,15 @@ Property Class の形式:
97
79
  1文字に省略する主要プロパティは以下の通り(このリストが全て)。
98
80
 
99
81
  | 省略 | プロパティ | 省略 | プロパティ |
100
- |------|-----------|------|-----------|
101
- | `p` | `padding` | `i` | `inset` |
102
- | `m` | `margin` | `t` | `top` |
103
- | `g` | `gap` | `b` | `bottom` |
104
- | `c` | `color` | `l` | `left` |
105
- | `f` | `font` | `r` | `right` |
106
- | `w` | `width` | `o` | `opacity` |
107
- | `h` | `height` | `v` | `visibility` |
108
- | `d` | `display` | `z` | `z-index` |
82
+ | --- | --- | --- | --- |
83
+ | `p` | `padding` | `i` | `inset` |
84
+ | `m` | `margin` | `t` | `top` |
85
+ | `g` | `gap` | `b` | `bottom` |
86
+ | `c` | `color` | `l` | `left` |
87
+ | `f` | `font` | `r` | `right` |
88
+ | `w` | `width` | `o` | `opacity` |
89
+ | `h` | `height` | `v` | `visibility` |
90
+ | `d` | `display` | `z` | `z-index` |
109
91
 
110
92
  Emmet と異なるのは `o` (`opacity`) のみ。
111
93
 
@@ -114,7 +96,7 @@ Emmet と異なるのは `o` (`opacity`) のみ。
114
96
  #### 基本形式: 「グループ略称」+「サブプロパティ名の省略形」
115
97
 
116
98
  | CSS プロパティ | Prop |
117
- |-------------|------|
99
+ | --- | --- |
118
100
  | font-size | `fz` |
119
101
  | font-weight | `fw` |
120
102
  | background-color | `bgc` |
@@ -130,7 +112,7 @@ Emmet と異なるのは `o` (`opacity`) のみ。
130
112
  `inline-start`/`inline-end`は`is`/`ie`ではなく、すでに普及しているCSSフレームワークの慣習に沿って`s`/`e`とする。
131
113
 
132
114
  | 方向 | サフィックス | 例 |
133
- |------|-----------|-----|
115
+ | --- | --- | --- |
134
116
  | physical | `-t` / `-b` / `-l` / `-r` | `bd-t`, `bd-b`, `bd-l`, `bd-r` |
135
117
  | inline / block | `-x` / `-y` | `bd-x`, `bd-y` |
136
118
  | inline-start / end | `-s` / `-e` | `bd-s`, `bd-e`, `ps`, `pe`, `ms`, `me`, `i-s`, `i-e` |
@@ -154,7 +136,7 @@ NG例: `flex` → `fx` としたうえで `flex-shrink` を `fsh` にする(`f
154
136
  2. ハイフン繋がり、または6文字以上: Emmet形式または認識しやすい範囲で省略
155
137
 
156
138
  | CSS プロパティ | Prop | 分類 |
157
- |-------------|------|------|
139
+ | --- | --- | --- |
158
140
  | float | `float` | そのまま |
159
141
  | order | `order` | そのまま |
160
142
  | position | `pos` | 省略 |
@@ -170,13 +152,12 @@ NG例: `flex` → `fx` としたうえで `flex-shrink` を `fsh` にする(`f
170
152
  グループを持たない1文字プロパティや、方向プロパティのみをサブプロパティに持つ場合は、衝突しない範囲で再利用可。
171
153
 
172
154
  | 1文字 Prop | 再利用先 | 展開例 |
173
- |-----------|---------|--------|
155
+ | --- | --- | --- |
174
156
  | `t`(`top`) | `text-*` | `ta`(`text-align`) |
175
157
  | `l`(`left`) | `line-*` | `lh`(`line-height`) |
176
158
  | `w`(`width`) | `writing-*` | `wm`(`writing-mode`) |
177
159
  | `p`(`padding`) | `place-*` | `pi`(`place-items`) |
178
160
 
179
-
180
161
  ## `{value}` の省略ルール
181
162
 
182
163
  ### 基本: CSS の実値をそのまま使う
@@ -218,7 +199,7 @@ opacity トークンは音楽記号に由来する例外的な命名で、その
218
199
  6文字以上かつ省略しても意味が通るものは省略可:
219
200
 
220
201
  | 実際の値 | 省略名 | クラスの例 |
221
- |--------|------------|-----|
202
+ | --- | --- | --- |
222
203
  | `uppercase` | `upper` | `-tt:upper` |
223
204
  | `lowercase` | `lower` | `-tt:lower` |
224
205
  | `fit-content` | `fit` | `-w:fit`, `-h:fit` |
@@ -18,11 +18,11 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
18
18
  ## プレフィックス一覧
19
19
 
20
20
  | プレフィックス | 種類 | サブレイヤー | 役割 |
21
- |--------------|------|------------|------|
21
+ | --- | --- | --- | --- |
22
22
  | `l--` | Layout Primitive | `lism-primitive.layout` | レイアウトの構成単位となる Primitive |
23
23
  | `a--` | Atomic Primitive | `lism-primitive.atomic` | レイアウトの最小単位(アイコン・区切り線等) |
24
24
 
25
- 併用ルールは [css-rules.md](./css-rules.md#プレフィックスとクラス分類) を参照してください。
25
+ 併用ルールは [css-rules.md](./css-rules.md#クラス分類とプレフィックス) を参照してください。
26
26
 
27
27
 
28
28
  ## Layout Primitive(`l--`)
@@ -30,7 +30,7 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
30
30
  レイアウト構造を定義するメインの Primitive 群です。
31
31
 
32
32
  | クラス | 用途 |
33
- |--------|-------------|
33
+ | --- | --- |
34
34
  | `l--box` | 汎用ボックス |
35
35
  | `l--flex` | 横方向の基本的なFlexboxレイアウト |
36
36
  | `l--stack` | 縦方向の縦積みFlexboxレイアウト(`flex-direction: column`)。 |
@@ -57,7 +57,7 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
57
57
  各 Primitive がどの用途に向いているか:
58
58
 
59
59
  | やりたいこと | `l--columns` | `l--autoColumns` | `l--switchColumns` | `l--withSide` | `l--grid` |
60
- |---|---|---|---|---|---|
60
+ | --- | --- | --- | --- | --- | --- |
61
61
  | 等幅 N 列 | ◯ | ◯ | ✗ | ✗ | △ |
62
62
  | 横並び ↔ 1 列の一括切替 | ◯ | ✗ | ◯ | ✗ | △ |
63
63
  | カラム最小幅で自動折返し | ✗ | ◯ | ✗ | ✗ | △ |
@@ -127,7 +127,7 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
127
127
  レイアウト構成物の最小単位となる Primitive です。
128
128
 
129
129
  | クラス | 用途 |
130
- |--------|------|
130
+ | --- | --- |
131
131
  | `a--icon` | SVG アイコン。`flex-shrink: 0`, デフォルトサイズ `1em` |
132
132
  | `a--divider` | 区切り線。`--bdc`, `--bds`, `--bdw` 変数でカスタマイズ |
133
133
  | `a--spacer` | 空白要素(`min-height: 1px; min-width: 1px`) |
@@ -2,40 +2,14 @@
2
2
 
3
3
  コンテンツを装飾するための空要素として使うクラス。`<Decorator>` は `<Lism atomic="decorator" aria-hidden="true" />` のエイリアスとして用意されています。
4
4
 
5
- ## 基本情報
6
-
7
- - クラス名: `a--decorator`
8
- - コンポーネント: `<Decorator>`
9
- - 公式ドキュメント: https://lism-css.com/docs/primitives/a--decorator.md
5
+ 公式ドキュメント(使い方・コード例): https://lism-css.com/docs/primitives/a--decorator.md
10
6
 
11
7
  ## 専用Props
12
8
 
13
9
  | Prop | 説明 |
14
- |------|------|
10
+ | --- | --- |
15
11
  | `size` | デコレーターのサイズを一括指定。この指定があると `w`(`width`)に値が渡され、自動で `ar="1/1"`(`aspect-ratio:1/1`)が付与される |
16
12
 
17
- ## Usage
18
-
19
- ### 装飾に使用する例(コーナー装飾)
20
-
21
- `pos="absolute"` と組み合わせて、親の四隅にコーナー枠を配置する例です。`bdc="current"` で文字色に追随します。
22
-
23
- ```jsx
24
- <Box p="30" pos="relative">
25
- <p>本文テキスト...</p>
26
- <Decorator size="1.25em" pos="absolute" t="0" l="0" bd-s bd-bs bdc="current" />
27
- <Decorator size="1.25em" pos="absolute" r="0" b="0" bd-e bd-be bdc="current" />
28
- </Box>
29
- ```
30
-
31
- ```html
32
- <div class="l--box -p:30 -pos:relative">
33
- <p>本文テキスト...</p>
34
- <div class="a--decorator -pos:absolute -t:0 -l:0 -bd-s -bd-bs -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
35
- <div class="a--decorator -pos:absolute -r:0 -b:0 -bd-e -bd-be -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
36
- </div>
37
- ```
38
-
39
13
  ## 関連プリミティブ
40
14
 
41
15
  - [a--spacer](./a--spacer.md) — 要素間スペース