@lism-css/mcp 0.10.4 → 0.12.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 (39) hide show
  1. package/README.ja.md +4 -2
  2. package/README.md +4 -2
  3. package/dist/data/docs-index.json +282 -64
  4. package/dist/data/guides/SKILL.md +113 -0
  5. package/dist/data/guides/base-styles.md +106 -0
  6. package/dist/data/guides/components-core.md +338 -0
  7. package/dist/data/guides/components-ui.md +351 -0
  8. package/dist/data/guides/css-rules.md +146 -0
  9. package/dist/data/guides/module-class.md +162 -0
  10. package/dist/data/guides/prop-responsive.md +54 -0
  11. package/dist/data/guides/property-class.md +400 -0
  12. package/dist/data/guides/set-class.md +190 -0
  13. package/dist/data/guides/tokens.md +210 -0
  14. package/dist/data/guides/utility-class.md +81 -0
  15. package/dist/data/meta.js +2 -2
  16. package/dist/index.js +4 -0
  17. package/dist/lib/load-data.js +2 -11
  18. package/dist/lib/load-markdown.d.ts +6 -0
  19. package/dist/lib/load-markdown.js +29 -0
  20. package/dist/lib/markdown-utils.d.ts +42 -0
  21. package/dist/lib/markdown-utils.js +158 -0
  22. package/dist/lib/schemas.d.ts +0 -242
  23. package/dist/lib/schemas.js +0 -64
  24. package/dist/lib/search.d.ts +2 -16
  25. package/dist/lib/search.js +9 -68
  26. package/dist/lib/types.d.ts +0 -64
  27. package/dist/tools/convert-css.js +96 -55
  28. package/dist/tools/get-component.js +60 -29
  29. package/dist/tools/get-guide.d.ts +2 -0
  30. package/dist/tools/get-guide.js +45 -0
  31. package/dist/tools/get-overview.js +26 -39
  32. package/dist/tools/get-props-system.js +45 -33
  33. package/dist/tools/get-tokens.js +9 -14
  34. package/dist/tools/search-docs.js +27 -9
  35. package/package.json +2 -2
  36. package/dist/data/components.json +0 -564
  37. package/dist/data/overview.json +0 -114
  38. package/dist/data/props-system.json +0 -1154
  39. package/dist/data/tokens.json +0 -152
@@ -0,0 +1,351 @@
1
+ # UI コンポーネント(`@lism-css/ui`)
2
+
3
+ `@lism-css/ui` パッケージには、Lism CSS の上に構築されたインタラクティブな UI コンポーネントが含まれます。
4
+
5
+ ```jsx
6
+ // React
7
+ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/react';
8
+
9
+ // Astro
10
+ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
11
+ ```
12
+
13
+ ## TOC
14
+
15
+ - [Accordion](#accordion)
16
+ - [Alert](#alert)
17
+ - [Avatar](#avatar)
18
+ - [Badge](#badge)
19
+ - [Button](#button)
20
+ - [Callout](#callout)
21
+ - [Chat](#chat)
22
+ - [Details](#details)
23
+ - [Modal](#modal)
24
+ - [NavMenu](#navmenu)
25
+ - [Tabs](#tabs)
26
+ - [ShapeDivider](#shapedivider)
27
+ - [DummyText](#dummytext)
28
+ - [DummyImage](#dummyimage)
29
+ - [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
30
+
31
+ [詳細](https://lism-css.com/docs/components/)
32
+
33
+ ---
34
+
35
+ ## Accordion
36
+
37
+ ソース: [Accordion/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Accordion)
38
+
39
+ アコーディオン UI。クリックでコンテンツの開閉を切り替える。JSで開閉アニメーションを制御。パネルに `hidden='until-found'` を使用しブラウザのページ内検索に対応。
40
+
41
+ **構造:** `Accordion.Root > Accordion.Item > (Accordion.Heading > Accordion.Button) + Accordion.Panel`(`Accordion.Icon` は自動で含まれる)
42
+
43
+ | Prop | 対象 | 型 | デフォルト | 説明 |
44
+ |------|------|-----|----------|------|
45
+ | `allowMultiple` | Root | `boolean` | — | 複数アイテムの同時展開を許可 |
46
+ | `as` | Heading | `string` | `div` | 見出しのHTMLタグ。`div` 時は `role='heading'` が自動付与。`h2`〜`h6` 指定時は role なし |
47
+ | `flow` | Panel | `string` | — | パネル内コンテンツ領域(`c--accordion_content`)のフロー余白 |
48
+
49
+ ```jsx
50
+ <Accordion.Root>
51
+ <Accordion.Item>
52
+ <Accordion.Heading>
53
+ <Accordion.Button>Label</Accordion.Button>
54
+ </Accordion.Heading>
55
+ <Accordion.Panel>Content</Accordion.Panel>
56
+ </Accordion.Item>
57
+ </Accordion.Root>
58
+ ```
59
+
60
+
61
+ ## Alert
62
+
63
+ ソース: [Alert/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Alert)
64
+
65
+ 短めの文言を目立たせて強調表示するアラートボックス。`type` プリセットによりアイコンとカラーが自動設定される。
66
+
67
+ | Prop | 型 | デフォルト | 説明 |
68
+ |------|-----|----------|------|
69
+ | `type` | `'alert' \| 'point' \| 'warning' \| 'check' \| 'help' \| 'info'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
70
+ | `keycolor` | `string` | — | キーカラー |
71
+ | `icon` | `ReactNode \| string` | — | カスタムアイコン |
72
+ | `layout` | `'flex' \| 'sideMain'` | `'flex'` | レイアウトモジュール |
73
+ | `flow` | `string` | `'s'` | コンテンツを囲む要素のフロー余白 |
74
+
75
+ ```jsx
76
+ <Alert type='warning'>Warning message</Alert>
77
+ ```
78
+
79
+
80
+ ## Avatar
81
+
82
+ ソース: [Avatar/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Avatar)
83
+
84
+ アバター(プロフィール画像)コンポーネント。Frame ベースの円形画像表示。`c--avatar` クラスが付与される。
85
+
86
+ | Prop | 型 | デフォルト | 説明 |
87
+ |------|-----|----------|------|
88
+ | `src` | `string` | — | 画像URL |
89
+ | `alt` | `string` | — | 代替テキスト |
90
+ | `size` | `string` | `'1.5em'` | アバターのサイズ |
91
+
92
+ ```jsx
93
+ <Avatar src='/avatar.jpg' alt='User' size='48px' />
94
+ ```
95
+
96
+
97
+ ## Badge
98
+
99
+ ソース: [Badge/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Badge)
100
+
101
+ バッジ(ラベル)コンポーネント。`span` 要素としてインライン表示。`c--badge` クラスが付与される。
102
+
103
+ | Prop | 型 | デフォルト | 説明 |
104
+ |------|-----|----------|------|
105
+ | `variant` | `string` | — | バリエーション(`'outline'` 等)。`c--badge--{variant}` クラスが出力 |
106
+ | `keycolor` | `string` | — | キーカラー |
107
+
108
+ ```jsx
109
+ <Badge keycolor='green'>New</Badge>
110
+ ```
111
+
112
+
113
+ ## Button
114
+
115
+ ソース: [Button/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Button)
116
+
117
+ ボタン型リンクコンポーネント。デフォルトで `a` 要素として出力。`c--button` クラスが付与される。
118
+
119
+ | Prop | 型 | デフォルト | 説明 |
120
+ |------|-----|----------|------|
121
+ | `variant` | `string` | — | バリエーション(`'fill'`, `'outline'` 等)。`c--button--{variant}` クラスが出力 |
122
+ | `keycolor` | `string` | — | キーカラー |
123
+ | `href` | `string` | — | リンク先URL |
124
+
125
+ ```jsx
126
+ <Button variant='fill' href='#'>Click me</Button>
127
+ ```
128
+
129
+
130
+ ## Callout
131
+
132
+ ソース: [Callout/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Callout)
133
+
134
+ 記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される。
135
+
136
+ | Prop | 型 | デフォルト | 説明 |
137
+ |------|-----|----------|------|
138
+ | `type` | `'note' \| 'alert' \| 'point' \| 'warning' \| 'check' \| 'help'` | `'note'` | コールアウトタイプ |
139
+ | `keycolor` | `string` | — | キーカラー |
140
+ | `icon` | `ReactNode \| string` | — | カスタムアイコン |
141
+ | `title` | `string` | — | タイトルテキスト |
142
+ | `flow` | `string` | `'s'` | コンテンツ部分のフロー余白 |
143
+
144
+ ```jsx
145
+ <Callout type='note' title='Important' keycolor='blue'>Important note</Callout>
146
+ ```
147
+
148
+
149
+ ## Chat
150
+
151
+ ソース: [Chat/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Chat)
152
+
153
+ チャット風の吹き出しコンポーネント。Grid ベースの会話形式 UI。`c--chat` クラスが付与される。
154
+
155
+ | Prop | 型 | デフォルト | 説明 |
156
+ |------|-----|----------|------|
157
+ | `name` | `string` | — | 発言者の名前 |
158
+ | `avatar` | `string` | — | アバター画像の src |
159
+ | `variant` | `'speak' \| 'think'` | `'speak'` | チャットタイプ |
160
+ | `direction` | `'start' \| 'end'` | `'start'` | 表示位置 |
161
+ | `keycolor` | `string` | `'gray'` | キーカラー |
162
+ | `flow` | `string` | `'s'` | コンテンツ要素のフロー余白 |
163
+
164
+ ```jsx
165
+ <Chat name='Alice' avatar='/alice.jpg'>Hello!</Chat>
166
+ ```
167
+
168
+
169
+ ## Details
170
+
171
+ ソース: [Details/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Details)
172
+
173
+ HTML の `details/summary` 要素をラップしたコンポーネント。Accordion とは違い JS を使わず CSS のみで実装。
174
+
175
+ **構造:** `Details.Root > Details.Summary > (Details.Title + Details.Icon) + Details.Content`
176
+
177
+ | Prop | 対象 | 型 | デフォルト | 説明 |
178
+ |------|------|-----|----------|------|
179
+ | `as` | Title | `string` | `'span'` | Title の HTML タグ |
180
+ | `--duration` | Root | `string` | — | 展開アニメーションの秒数(style 経由で指定) |
181
+
182
+ ```jsx
183
+ <Details.Root>
184
+ <Details.Summary>
185
+ <Details.Title>Title</Details.Title>
186
+ <Details.Icon />
187
+ </Details.Summary>
188
+ <Details.Content>Content</Details.Content>
189
+ </Details.Root>
190
+ ```
191
+
192
+
193
+ ## Modal
194
+
195
+ ソース: [Modal/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Modal)
196
+
197
+ モーダルダイアログ UI。`dialog` 要素を使用。`data-modal-open` / `data-modal-close` 属性で開閉を制御。
198
+
199
+ **構造:** `Modal.OpenBtn + Modal.Root > Modal.Inner > Modal.Body + Modal.CloseBtn`
200
+
201
+ | Prop | 対象 | 型 | デフォルト | 説明 |
202
+ |------|------|-----|----------|------|
203
+ | `id` | Root | `string` | — | モーダルの ID(必須) |
204
+ | `modalId` | OpenBtn / CloseBtn | `string` | — | 対象モーダルの ID |
205
+ | `duration` | Root | `string` | — | アニメーション持続時間。`--duration` 変数として出力 |
206
+ | `offset` | Inner | `string` | — | 非表示時の位置オフセット。`--offset` 変数として出力 |
207
+ | `layout` | Inner | `string` | — | Inner 要素のレイアウトモジュール |
208
+
209
+ ```jsx
210
+ <Modal.OpenBtn modalId='modal-01'>Open</Modal.OpenBtn>
211
+ <Modal.Root id='modal-01'>
212
+ <Modal.Inner>
213
+ <Modal.Body>Content</Modal.Body>
214
+ <Modal.CloseBtn modalId='modal-01' />
215
+ </Modal.Inner>
216
+ </Modal.Root>
217
+ ```
218
+
219
+
220
+ ## NavMenu
221
+
222
+ ソース: [NavMenu/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/NavMenu)
223
+
224
+ ナビゲーションメニューコンポーネント。`c--navMenu` クラスが付与される。
225
+
226
+ **構造:** `NavMenu.Root > NavMenu.Item > NavMenu.Link`(`NavMenu.Nest` でネスト可能)
227
+
228
+ | Prop | 対象 | 型 | デフォルト | 説明 |
229
+ |------|------|-----|----------|------|
230
+ | `hovBgc` | Root | `string` | — | ホバー時の背景カラー。`--hov-bgc` 変数として出力 |
231
+ | `hovC` | Root | `string` | — | ホバー時のテキストカラー。`--hov-c` 変数として出力 |
232
+ | `itemP` | Root | `string` | — | 各アイテムのパディング。`--_item-p` 変数として出力 |
233
+ | `href` | Link | `string` | — | リンク先URL。指定ありで `a` 要素、なしで `span` 要素 |
234
+
235
+ ```jsx
236
+ <NavMenu.Root>
237
+ <NavMenu.Item>
238
+ <NavMenu.Link href='/'>Home</NavMenu.Link>
239
+ </NavMenu.Item>
240
+ <NavMenu.Item>
241
+ <NavMenu.Link href='/about'>About</NavMenu.Link>
242
+ </NavMenu.Item>
243
+ </NavMenu.Root>
244
+ ```
245
+
246
+
247
+ ## Tabs
248
+
249
+ ソース: [Tabs/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Tabs)
250
+
251
+ タブ切り替え UI。タブクリックでコンテンツパネルを切り替える。スタイリングはほぼなく動きのみ提供。
252
+
253
+ **構造:** `Tabs.Root > Tabs.Item > (Tabs.Tab + Tabs.Panel)`(`Tabs.List` も利用可能)
254
+
255
+ | Prop | 対象 | 型 | デフォルト | 説明 |
256
+ |------|------|-----|----------|------|
257
+ | `tabId` | Root | `string` | — | タブを特定するための ID 文字列 |
258
+ | `defaultIndex` | Root | `number` | `1` | 初期アクティブタブ(1始まり) |
259
+ | `listProps` | Root | `object` | — | タブボタンリスト要素へ渡す props |
260
+
261
+ ```jsx
262
+ <Tabs.Root>
263
+ <Tabs.Item>
264
+ <Tabs.Tab>Tab 1</Tabs.Tab>
265
+ <Tabs.Panel>Content 1</Tabs.Panel>
266
+ </Tabs.Item>
267
+ <Tabs.Item>
268
+ <Tabs.Tab>Tab 2</Tabs.Tab>
269
+ <Tabs.Panel>Content 2</Tabs.Panel>
270
+ </Tabs.Item>
271
+ </Tabs.Root>
272
+ ```
273
+
274
+
275
+ ## ShapeDivider
276
+
277
+ ソース: [ShapeDivider/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/ShapeDivider)
278
+
279
+ セクション間の波型などの装飾的な区切り要素。SVG ベースの形状で区切りを表現。
280
+
281
+ | Prop | 型 | デフォルト | 説明 |
282
+ |------|-----|----------|------|
283
+ | `viewBox` | `string` | — | SVG の viewBox |
284
+ | `level` | `number` | `5` | シェイプの高さレベル。`0` で非表示 |
285
+ | `flip` | `'X' \| 'Y' \| 'XY'` | — | 反転方向。`data-flip` 属性として出力 |
286
+ | `stretch` | `string` | — | 水平方向の引き伸ばし量。`--_inner-stretch` 変数として出力 |
287
+ | `offset` | `string` | — | 水平方向のオフセット。`--_inner-offset` 変数として出力 |
288
+ | `isEmpty` | `boolean` | — | シェイプを非表示にしてスペーサーとして使用 |
289
+ | `isAnimation` | `boolean` | — | アニメーションを有効化。`data-has-animation` 属性として出力 |
290
+
291
+ ```jsx
292
+ <ShapeDivider viewBox='0 0 100 10'>
293
+ <path d='M100 6C89.3 3.3 82.7 9 70 9S48.4 3 38 3 24.5 6 17 6C7.4 6 0 0 0 0v10h100V6z'/>
294
+ </ShapeDivider>
295
+ ```
296
+
297
+
298
+ ## DummyText
299
+
300
+ ソース: [DummyText/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/DummyText)
301
+
302
+ ダミーテキストを生成するコンポーネント。プレビューやテスト用。複数の言語とテキスト長に対応。
303
+
304
+ | Prop | 型 | デフォルト | 説明 |
305
+ |------|-----|----------|------|
306
+ | `lang` | `'ja' \| 'en' \| 'ar'` | `'en'` | テキストの言語 |
307
+ | `length` | `'xs' \| 's' \| 'm' \| 'l' \| 'xl' \| 'codes'` | `'m'` | テキストの長さ。`'codes'` は `b`, `i`, `a`, `code` 要素を含むテキスト |
308
+ | `pre` | `string` | — | テキストの前に表示する文字列 |
309
+ | `offset` | `number` | `0` | テキストのオフセット。区切り文字単位で先頭を切り捨て |
310
+
311
+ ```jsx
312
+ <DummyText lang='ja' />
313
+ ```
314
+
315
+
316
+ ## DummyImage
317
+
318
+ ソース: [DummyImage/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/DummyImage)
319
+
320
+ ダミーのプレースホルダー画像を出力するコンポーネント。`cdn.lism-css.com` からダミー画像を取得。
321
+
322
+ ```jsx
323
+ <DummyImage />
324
+ ```
325
+
326
+
327
+ ## CLI でプロジェクトにコピーして使う
328
+
329
+ `@lism-css/ui` の UI コンポーネントは、CLI コマンドで自分のプロジェクトにソースコードをコピーして使うこともできます。コピーしたファイルは自由にカスタマイズ可能です。
330
+
331
+ ```bash
332
+ # 初期設定(framework、出力先ディレクトリを対話的に設定)
333
+ npx lism-ui init
334
+
335
+ # コンポーネントを追加
336
+ npx lism-ui add Button Modal
337
+ npx lism-ui add -a # 全コンポーネントを追加
338
+
339
+ # 利用可能なコンポーネント一覧を表示
340
+ npx lism-ui list
341
+ ```
342
+
343
+ `init` で生成される `lism-ui.json`:
344
+
345
+ ```json
346
+ {
347
+ "framework": "react",
348
+ "componentsDir": "src/components/ui",
349
+ "helperDir": "src/components/ui/_helper"
350
+ }
351
+ ```
@@ -0,0 +1,146 @@
1
+ # CSS 設計ルール
2
+
3
+ ## TOC
4
+
5
+ - [CSS Layer 構造](#css-layer-構造)
6
+ - [命名規則とプレフィックス](#命名規則とプレフィックス)
7
+ - [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
8
+ - [CSS の配置場所](#css-の配置場所)
9
+
10
+ [詳細](https://lism-css.com/docs/css-methodology/)
11
+
12
+ ---
13
+
14
+ ## CSS Layer 構造
15
+
16
+ Lism CSS は CSS Layers による詳細度管理を採用しています。
17
+ カスタムCSSを追加する場合は、この順序を意識してください。
18
+
19
+ ```
20
+ Settings(トークン定義)
21
+ → @layer lism-base(Reset CSS・トークン・.set--クラス)
22
+ → @layer reset(リセットCSS)
23
+ → @layer lism-modules
24
+ → @layer state(.is-- ステートモジュール)
25
+ → @layer layout(.l-- レイアウトモジュール)
26
+ → @layer atomic(.a-- アトミックモジュール)
27
+ → .c-- は sublayer なし(lism-modules 直下、または lism-custom で定義)
28
+ → @layer lism-custom(ユーザーカスタマイズ用)
29
+ → @layer lism-utility(.u-- ユーティリティクラス)
30
+ → Property Class(レイヤー外 — 最も詳細度が高い)
31
+ ```
32
+
33
+
34
+ ## 命名規則とプレフィックス
35
+
36
+ [詳細](https://lism-css.com/docs/module-class/)
37
+
38
+ クラス名のプレフィックスによって、役割とレイヤーの所属が決まります。
39
+
40
+ | プレフィックス | レイヤー | 役割 | 例 |
41
+ |--------------|---------|------|-----|
42
+ | `.set--` | lism-base | ベーススタイル上書き・トークン再定義 | `.set--plain`, `.set--transition` |
43
+ | `.is--` | lism-modules | 付け外し可能な状態モジュール | `.is--container`, `.is--wrapper` |
44
+ | `.l--` | lism-modules | レイアウト構成モジュール | `.l--grid`, `.l--flex`, `.l--stack` |
45
+ | `.a--` | lism-modules | レイアウト最小単位モジュール | `.a--icon`, `.a--divider` |
46
+ | `.c--` | lism-modules | 具体的な役割のコンポーネント | `.c--button`, `.c--accordion` |
47
+ | `.u--` | lism-utility | 用途が明確なユーティリティ | `.u--cbox`, `.u--trim` |
48
+ | `.-` | レイヤー外 | 単一プロパティ制御(Property Class) | `.-fz:l`, `.-p:20`, `.-d:none` |
49
+
50
+ **併用ルール:**
51
+ - `.l--` と `.c--` は併用OK(例: `<div class="l--flex c--nav">`)
52
+ - 同カテゴリ内の併用は不可(例: `.l--flex` と `.l--grid` は同要素に付けない)
53
+ - バリエーション: `.c--button.c--button--outline`
54
+ - 子要素: `.c--card_header`, `.c--card_body`
55
+
56
+ **記述順序:**
57
+ class 属性にクラスを直接記述する場合、Property Class(`-` プレフィックス)はモジュールクラスやユーティリティクラスの**後ろ**に書いてください。
58
+
59
+ ```html
60
+ <!-- OK: モジュールクラス → Property Class -->
61
+ <div class="l--flex c--nav -p:20 -g:20">...</div>
62
+ <div class="l--box u--cbox -bd -p:20">...</div>
63
+
64
+ <!-- NG: Property Class が先 -->
65
+ <div class="-p:20 -g:20 l--flex c--nav">...</div>
66
+ ```
67
+
68
+
69
+ ## カスタムCSS を追加する場合
70
+
71
+ 独自のスタイルを追加する場合は、対象に合った Lism の CSS Layer 内に記述してください。
72
+
73
+ ```css
74
+ /* カスタムコンポーネント → lism-modules に追加 */
75
+ @layer lism-modules {
76
+ .c--my-card {
77
+ border: 1px solid var(--brand);
78
+ border-radius: var(--bdrs--20);
79
+ padding: var(--s30);
80
+ }
81
+ }
82
+
83
+ /* ベーススタイルの拡張 → lism-base に追加 */
84
+ @layer lism-base {
85
+ .set--my-theme {
86
+ --brand: #c00;
87
+ }
88
+ }
89
+ ```
90
+
91
+ カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。
92
+
93
+ ```css
94
+ /* NG */
95
+ .c--my-card { padding: 24px; border-radius: 8px; }
96
+
97
+ /* OK */
98
+ .c--my-card { padding: var(--s30); border-radius: var(--bdrs--20); }
99
+ ```
100
+
101
+ ただし、明確にその数値に意図がある場合は、生のCSS値を使用しても構いません。
102
+
103
+ **レイヤー外に書く場合:**
104
+ `@layer` の外(レイヤーなし)でカスタムCSSを書くのは、**Property Class(`-{prop}:{value}`)を拡張する場合のみ**としてください。それ以外のカスタムスタイルは必ずいずれかの `@layer` 内に記述します。
105
+
106
+ ```css
107
+ /* OK: Property Class の拡張はレイヤー外 */
108
+ .-myProp\:myValue { ... }
109
+
110
+ /* NG: コンポーネントやユーティリティをレイヤー外に書かない */
111
+ .c--my-card { ... }
112
+ ```
113
+
114
+
115
+ ## CSS の配置場所
116
+
117
+ ### グローバル CSS(サイト全体)
118
+
119
+ Lism のトークン変数のカスタマイズやベーススタイルの上書きは、サイト全体で読み込むグローバル CSS ファイルに記述します。(lism-cssの`main.css`ファイルよりあとで読み込むこと)。
120
+
121
+ ```css
122
+ /* global.css などで適切な @layer で定義すること */
123
+ @layer lism-base {
124
+ :root {
125
+ --brand: #c00;
126
+ --link-c: #0066cc;
127
+ --fw--bold: 700;
128
+ }
129
+ }
130
+ ```
131
+
132
+ ### コンポーネント CSS
133
+
134
+ コンポーネント固有のスタイルは、そのコンポーネントを定義しているファイルに紐づけます。
135
+
136
+ - `.jsx` / `.tsx` ファイル: CSS ファイルを `import` する
137
+ - `.astro` ファイル: `import` するか、コンポーネントファイル内の `<style>` タグに記述
138
+
139
+ ```css
140
+ /* コンポーネント用CSS は lism-modules 内に定義する */
141
+ @layer lism-modules {
142
+ .c--yourComponent {
143
+ ...
144
+ }
145
+ }
146
+ ```
@@ -0,0 +1,162 @@
1
+ # モジュールクラス
2
+
3
+ Lism CSS では、クラス名のプレフィックスによってモジュールの種類と CSS Layer の所属が決まります。
4
+ すべてのモジュールクラスは `@layer lism-modules` に属します(`set--` を除く)。
5
+
6
+ ## TOC
7
+
8
+ - [プレフィックス一覧](#プレフィックス一覧)
9
+ - [State Module(`is--`)](#state-moduleis--)
10
+ - [Layout Module(`l--`)](#layout-modulel--)
11
+ - [Atomic Module(`a--`)](#atomic-modulea--)
12
+ - [Component(`c--`)](#componentc--)
13
+
14
+ [詳細](https://lism-css.com/docs/module-class/)
15
+
16
+ ---
17
+
18
+ ## プレフィックス一覧
19
+
20
+ | プレフィックス | 種類 | 役割 |
21
+ |--------------|------|------|
22
+ | `is--` | State Module | 複数のモジュールに付け外しできる汎用的な状態クラス |
23
+ | `l--` | Layout Module | レイアウトの構成単位となるモジュール |
24
+ | `a--` | Atomic Module | レイアウトの最小単位(アイコン・区切り線等) |
25
+ | `c--` | Component | 具体的な役割を持つコンポーネント |
26
+
27
+ **併用ルール:**
28
+ - `is--` は他のすべてのモジュールと併用可能
29
+ - `l--` と `c--` は併用可能(例: `class="l--flex c--nav"`)
30
+ - 同カテゴリ内の併用は不可(例: `l--flex` と `l--grid` は同要素に付けない)
31
+
32
+
33
+ ## State Module(`is--`)
34
+
35
+ [詳細](https://lism-css.com/docs/state/)
36
+
37
+ 要素に構造的な振る舞い(状態)を付与するクラスです。他のモジュールクラスと自由に組み合わせられます。
38
+
39
+ | クラス | 用途 | 備考 |
40
+ |--------|------|------|
41
+ | `is--container` | コンテナクエリの基準要素にする(`container-type: inline-size`) | Lism のレスポンシブ機能の前提。判定基準にしたいラッパーに付与する |
42
+ | `is--wrapper` | 直下の子要素のコンテンツ幅を制限する | `-contentSize:s` / `-contentSize:l` でプリセットサイズ指定可能。デフォルト: `--sz--m` |
43
+ | `is--layer` | `position: absolute; inset: 0` の絶対配置レイヤー | `overflow: hidden` も適用される |
44
+ | `is--linkBox` | ボックス全体をクリッカブルなリンク領域にする | `position: relative; isolation: isolate` を適用 |
45
+ | `is--vertical` | 縦書きモード(`writing-mode: var(--vertical-mode)`) | `is--vertical@sm`, `is--vertical@md` でブレークポイント指定可能 |
46
+ | `is--skipFlow` | `l--flow` 内で次の兄弟要素のフロー余白をリセット | `is--skipFlow + *` で `--flow: 0px` |
47
+ | `is--side` | `l--sideMain` 内でサイド要素を示す | `l--sideMain` と組み合わせて使用 |
48
+
49
+ ### コンポーネントでの対応
50
+
51
+ | JSX Prop | HTML クラス |
52
+ |----------|-----------|
53
+ | `isContainer` | `is--container` |
54
+ | `isWrapper` / `isWrapper='s'` | `is--wrapper` / `is--wrapper -contentSize:s` |
55
+ | `isLayer` | `is--layer` |
56
+ | `isLinkBox` | `is--linkBox` |
57
+ | `isVertical` | `is--vertical` |
58
+
59
+ ```jsx
60
+ // Layout 優先の書き方(推奨)
61
+ <Stack isLayer>背景レイヤー</Stack>
62
+ // → <div class="l--stack is--layer">...</div>
63
+
64
+ <Flex isWrapper="l">コンテンツ</Flex>
65
+ // → <div class="l--flex is--wrapper -contentSize:l">...</div>
66
+ ```
67
+
68
+
69
+ ## Layout Module(`l--`)
70
+
71
+ レイアウト構造を定義するメインのモジュール群です。Lism コンポーネントでは `layout` prop が内部で固定されており、対応するクラスが自動出力されます。
72
+
73
+ | クラス | コンポーネント | CSS display | 用途 |
74
+ |--------|-------------|-------------|------|
75
+ | `l--box` | `<Box>` | — | 汎用ボックス |
76
+ | `l--flex` | `<Flex>` | `flex` | Flexbox(横方向)。子要素に `min-width: 0` |
77
+ | `l--stack` | `<Stack>` | `flex` | 縦積み(`flex-direction: column`) |
78
+ | `l--cluster` | `<Cluster>` | `flex` | 折り返し Flex(`flex-wrap: wrap; align-items: center`) |
79
+ | `l--grid` | `<Grid>` | `grid` | CSS Grid。`--gtc`, `--gtr`, `--gta` 変数で制御 |
80
+ | `l--center` | `<Center>` | `grid` | 中央配置(`place-content: center; place-items: center`) |
81
+ | `l--flow` | `<Flow>` | `flow-root` | フローコンテンツ。子要素間に `margin-block-start: var(--flow)` |
82
+ | `l--frame` | `<Frame>` | — | アスペクト比フレーム。直下メディアに `object-fit: cover` |
83
+ | `l--columns` | `<Columns>` | `grid` | 固定カラム数(`grid-template-columns: repeat(var(--cols), minmax(0, 1fr))`) |
84
+ | `l--tileGrid` | `<TileGrid>` | `grid` | 均等タイルグリッド(`grid-template: repeat(var(--rows,1), minmax(0, 1fr)) / repeat(var(--cols,1), minmax(0, 1fr))`) |
85
+ | `l--fluidCols` | `<FluidCols>` | `grid` | 流動カラム(`auto-fit` / `auto-fill`)。`--cols` で最小幅指定 |
86
+ | `l--switchCols` | `<SwitchCols>` | `flex` | ブレークポイントでカラム切り替え。`--breakSize` で制御 |
87
+ | `l--sideMain` | `<SideMain>` | `flex` | サイド+メインの2カラム。`--sideW`, `--mainW` で制御 |
88
+
89
+ ### レイアウト固有の Props
90
+
91
+ ```jsx
92
+ <Grid gtc="1fr 1fr" gtr="auto">...</Grid>
93
+ <Columns cols={3}>...</Columns> // --cols: 3
94
+ <FluidCols autoFill>...</FluidCols> // --autoMode: auto-fill
95
+ <SwitchCols breakSize="480px">...</SwitchCols> // --breakSize: 480px
96
+ <SideMain sideW="200px" mainW="1fr">...</SideMain>
97
+ <Flow flow="30">...</Flow> // --flow: var(--s30)
98
+ ```
99
+
100
+
101
+ ## Atomic Module(`a--`)
102
+
103
+ レイアウトの最小単位となる単機能モジュールです。
104
+
105
+ | クラス | コンポーネント | 用途 |
106
+ |--------|-------------|------|
107
+ | `a--icon` | `<Icon>` | SVG アイコン。`flex-shrink: 0`, デフォルトサイズ `1em` |
108
+ | `a--divider` | `<Divider>` | 区切り線。`--bdc`, `--bds`, `--bdw` 変数でカスタマイズ |
109
+ | `a--spacer` | `<Spacer>` | 空白要素(`min-height: 1px; min-width: 1px`) |
110
+ | `a--decorator` | `<Decorator>` | 装飾用要素(SCSS定義なし、クラス名のみ出力) |
111
+
112
+ ```jsx
113
+ <Icon as={LucideArrowRight} fz="xl" />
114
+ <Media as="img" src="/image.jpg" alt="説明" ar="16/9" />
115
+ <Divider />
116
+ <Spacer h="40" />
117
+ ```
118
+
119
+
120
+ ## Component(`c--`)
121
+
122
+ [詳細](https://lism-css.com/docs/components/)
123
+
124
+ より具体的な役割を持つコンポーネントのクラスです。他のクラスとの組み合わせを前提とした設計になっています。
125
+
126
+ ### ユーザー定義コンポーネント
127
+
128
+ 独自のコンポーネントを作成する場合は `c--{name}` の命名規則に従います。
129
+
130
+ ```css
131
+ @layer lism-modules {
132
+ .c--my-card {
133
+ border: 1px solid var(--brand);
134
+ border-radius: var(--bdrs--20);
135
+ padding: var(--s30);
136
+ }
137
+ .c--my-card_header { ... } /* 子要素 */
138
+ .c--my-card_body { ... }
139
+ }
140
+ ```
141
+
142
+ - バリエーション: `.c--button.c--button--outline`
143
+ - 子要素: `.c--card_header`, `.c--card_body`
144
+
145
+ ### `@lism-css/ui` で提供されるコンポーネント
146
+
147
+ `@lism-css/ui` パッケージでは、以下の `c--` クラスを持つ UI コンポーネントが利用できます。
148
+
149
+ | クラス | コンポーネント | 用途 |
150
+ |--------|-------------|------|
151
+ | `c--button` | `<Button>` | ボタン(`c--button--outline` バリエーションあり) |
152
+ | `c--badge` | `<Badge>` | ラベル・バッジ(`c--badge--outline` バリエーションあり) |
153
+ | `c--avatar` | `<Avatar>` | ユーザーアイコン |
154
+ | `c--accordion` | `<Accordion>` | 折りたたみパネル(`_item`, `_panel`, `_button`, `_content`, `_icon` 子要素あり) |
155
+ | `c--tabs` | `<Tabs>` | タブ切り替え UI(`_list`, `_tab`, `_panel` 子要素あり) |
156
+ | `c--modal` | `<Modal>` | モーダルダイアログ(`_inner` 子要素あり) |
157
+ | `c--details` | `<Details>` | details/summary(`_summary`, `_icon`, `_body` 子要素あり) |
158
+ | `c--alert` | `<Alert>` | 警告・通知ボックス |
159
+ | `c--callout` | `<Callout>` | 注釈・補足(`_head`, `_icon`, `_title`, `_body` 子要素あり) |
160
+ | `c--chat` | `<Chat>` | チャット風 UI(`_avatar`, `_name`, `_body`, `_content`, `_deco` 子要素あり) |
161
+ | `c--navMenu` | `<NavMenu>` | ナビゲーションメニュー(`_item`, `_link`, `_nest` 子要素あり) |
162
+ | `c--shapeDivider` | `<ShapeDivider>` | 図形区切り線(`_inner`, `_svg` 子要素あり) |