@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.
- package/README.ja.md +15 -15
- package/README.md +5 -5
- package/dist/data/docs-index.json +232 -96
- package/dist/data/guides/SKILL.md +162 -224
- package/dist/data/guides/antipatterns-layout.md +268 -0
- package/dist/data/guides/antipatterns.md +118 -196
- package/dist/data/guides/base-styles.md +14 -12
- package/dist/data/guides/components-core.md +26 -8
- package/dist/data/guides/components-ui.md +28 -24
- package/dist/data/guides/css-rules.md +40 -57
- package/dist/data/guides/customize.md +121 -37
- package/dist/data/guides/naming.md +23 -42
- package/dist/data/guides/primitive-class.md +5 -5
- package/dist/data/guides/primitives/a--decorator.md +2 -28
- package/dist/data/guides/primitives/a--divider.md +1 -52
- package/dist/data/guides/primitives/a--icon.md +2 -76
- package/dist/data/guides/primitives/a--spacer.md +1 -49
- package/dist/data/guides/primitives/l--autoColumns.md +7 -54
- package/dist/data/guides/primitives/l--box.md +1 -21
- package/dist/data/guides/primitives/l--center.md +6 -39
- package/dist/data/guides/primitives/l--cluster.md +6 -26
- package/dist/data/guides/primitives/l--columns.md +7 -56
- package/dist/data/guides/primitives/l--flex.md +5 -62
- package/dist/data/guides/primitives/l--flow.md +11 -72
- package/dist/data/guides/primitives/l--frame.md +7 -78
- package/dist/data/guides/primitives/l--grid.md +5 -56
- package/dist/data/guides/primitives/l--stack.md +5 -44
- package/dist/data/guides/primitives/l--switchColumns.md +8 -53
- package/dist/data/guides/primitives/l--tileGrid.md +7 -44
- package/dist/data/guides/primitives/l--withSide.md +9 -79
- package/dist/data/guides/property-class/all-props.md +244 -0
- package/dist/data/guides/property-class/bd.md +5 -70
- package/dist/data/guides/property-class/hov.md +14 -73
- package/dist/data/guides/property-class/max-sz.md +3 -39
- package/dist/data/guides/property-class.md +31 -249
- package/dist/data/guides/references/authoring.md +246 -0
- package/dist/data/guides/references/page-sections.md +99 -0
- package/dist/data/guides/references/verification.md +73 -0
- package/dist/data/guides/responsive.md +68 -20
- package/dist/data/guides/set-class.md +2 -12
- package/dist/data/guides/tokens.md +31 -31
- package/dist/data/guides/trait-class/has--gutter.md +3 -31
- package/dist/data/guides/trait-class/has--mask.md +3 -36
- package/dist/data/guides/trait-class/has--snap.md +3 -34
- package/dist/data/guides/trait-class/has--transition.md +3 -41
- package/dist/data/guides/trait-class/is--boxLink.md +2 -63
- package/dist/data/guides/trait-class/is--container.md +2 -29
- package/dist/data/guides/trait-class/is--layer.md +1 -57
- package/dist/data/guides/trait-class/is--wrapper.md +11 -60
- package/dist/data/guides/trait-class.md +8 -8
- package/dist/data/guides/utility-class.md +1 -1
- package/dist/data/meta.js +4 -3
- package/dist/index.js +4 -1
- package/dist/lib/load-markdown.d.ts +4 -0
- package/dist/lib/load-markdown.js +10 -0
- package/dist/lib/markdown-utils.d.ts +1 -1
- package/dist/lib/response.d.ts +5 -0
- package/dist/lib/response.js +15 -2
- package/dist/lib/schemas.d.ts +35 -0
- package/dist/lib/schemas.js +13 -0
- package/dist/lib/search.d.ts +2 -0
- package/dist/lib/search.js +45 -2
- package/dist/lib/types.d.ts +5 -21
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.js +8 -0
- package/dist/tools/convert-css.js +38 -15
- package/dist/tools/get-component.js +2 -2
- package/dist/tools/get-guide.d.ts +2 -0
- package/dist/tools/get-guide.js +40 -17
- package/dist/tools/get-overview.js +2 -2
- package/dist/tools/get-props-system.js +8 -6
- package/dist/tools/get-tokens.js +2 -2
- package/dist/tools/search-docs.js +13 -7
- 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` | `'
|
|
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='
|
|
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
|
|
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
|
|
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
|
-
`
|
|
347
|
+
`init` で生成される `lism.config.js` の `ui` セクション:
|
|
343
348
|
|
|
344
349
|
```js
|
|
345
350
|
export default {
|
|
346
|
-
|
|
351
|
+
ui: {
|
|
347
352
|
framework: 'react',
|
|
348
|
-
|
|
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--`
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
-
/*
|
|
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--
|
|
173
|
-
border:
|
|
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--
|
|
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
|
-
|
|
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
|
-
/*
|
|
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
|
-
|
|
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
|
|