@lism-css/mcp 0.13.0 → 0.15.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/dist/data/docs-index.json +176 -85
- package/dist/data/guides/SKILL.md +29 -15
- package/dist/data/guides/base-styles.md +2 -0
- package/dist/data/guides/components-core.md +25 -20
- package/dist/data/guides/components-ui.md +16 -23
- package/dist/data/guides/css-rules.md +101 -26
- package/dist/data/guides/customize.md +220 -0
- package/dist/data/guides/naming.md +218 -0
- package/dist/data/guides/primitive-class.md +3 -90
- package/dist/data/guides/primitives/a--decorator.md +3 -5
- package/dist/data/guides/primitives/a--divider.md +4 -11
- package/dist/data/guides/primitives/a--spacer.md +1 -1
- package/dist/data/guides/primitives/l--box.md +1 -1
- package/dist/data/guides/primitives/l--flex.md +1 -1
- package/dist/data/guides/primitives/l--flow.md +1 -1
- package/dist/data/guides/primitives/l--fluidCols.md +31 -28
- package/dist/data/guides/primitives/l--frame.md +1 -1
- package/dist/data/guides/primitives/l--sideMain.md +1 -1
- package/dist/data/guides/prop-responsive.md +28 -3
- package/dist/data/guides/property-class/bd.md +127 -0
- package/dist/data/guides/property-class/hov.md +140 -0
- package/dist/data/guides/property-class/max-sz.md +99 -0
- package/dist/data/guides/property-class.md +52 -86
- package/dist/data/guides/set-class.md +62 -94
- package/dist/data/guides/tokens.md +24 -15
- package/dist/data/guides/trait-class/has--gutter.md +48 -0
- package/dist/data/guides/trait-class/has--mask.md +66 -0
- package/dist/data/guides/trait-class/has--snap.md +68 -0
- package/dist/data/guides/trait-class/has--transition.md +73 -0
- package/dist/data/guides/{primitives → trait-class}/is--boxLink.md +8 -8
- package/dist/data/guides/{primitives → trait-class}/is--container.md +2 -2
- package/dist/data/guides/{primitives → trait-class}/is--layer.md +2 -2
- package/dist/data/guides/{primitives → trait-class}/is--wrapper.md +2 -2
- package/dist/data/guides/trait-class.md +77 -0
- package/dist/data/guides/utility-class.md +0 -1
- package/dist/data/meta.js +2 -2
- package/dist/lib/load-markdown.js +1 -1
- package/dist/lib/search.js +8 -5
- package/dist/tools/get-component.js +7 -6
- package/dist/tools/get-guide.js +1 -1
- package/package.json +2 -2
- package/dist/data/guides/primitives/is--vertical.md +0 -52
|
@@ -16,11 +16,11 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
16
16
|
- [Lism Props](#lism-props)
|
|
17
17
|
- [セマンティックコンポーネント](#セマンティックコンポーネント)
|
|
18
18
|
- [Atomic Primitives](#atomic-primitives)
|
|
19
|
-
- [Trait
|
|
19
|
+
- [Trait Components](#trait-components)
|
|
20
20
|
- [Layout Primitives](#layout-primitives)
|
|
21
21
|
- [`getLismProps()`](#getlismprops--外部コンポーネントとの連携)
|
|
22
22
|
|
|
23
|
-
[詳細](https://lism-css.com/docs/core-components/
|
|
23
|
+
[詳細](https://lism-css.com/docs/core-components/lism-props/)
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -41,7 +41,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
41
41
|
|
|
42
42
|
ソース: [props.ts](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts)
|
|
43
43
|
|
|
44
|
-
`<Lism
|
|
44
|
+
`<Lism>`系コンポーネントで受け取れる Lism CSS 専用プロパティを **Lism Props** と呼びます。
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
### 共通 Props
|
|
@@ -51,10 +51,11 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
51
51
|
| Prop | 説明 | 例 |
|
|
52
52
|
|------|------|-----|
|
|
53
53
|
| `as` | レンダリングする HTML 要素または外部コンポーネントを指定(デフォルト: `"div"`) | `as="section"`, `as={Image}` |
|
|
54
|
-
| `lismClass` |
|
|
55
|
-
| `variant` | `lismClass`
|
|
56
|
-
| `layout` | レイアウトプリミティブ(`l--{layout}
|
|
57
|
-
| `
|
|
54
|
+
| `lismClass` | コンポーネント基底となる `c--*` クラスを指定。`variant` による BEM 展開の対象 | `lismClass="c--myComponent"` |
|
|
55
|
+
| `variant` | `lismClass` 先頭クラスに対する BEM Modifier を付与(`c--` 専用。`a--` / `l--` には展開されない) | `variant="secondary"` |
|
|
56
|
+
| `layout` | レイアウトプリミティブ(`l--{layout}`)を指定 | `layout="flow"` |
|
|
57
|
+
| `atomic` | アトミックプリミティブ(`a--{atomic}`)を指定。`'divider'` / `'spacer'` / `'decorator'` が利用可能(`'icon'` は内部用) | `atomic="divider"` |
|
|
58
|
+
| `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="plain"`, `set="var:hov var:bxsh"`, `set="-plain"` |
|
|
58
59
|
| `util` | ユーティリティクラス(`u--{value}`)を指定。`set` と同様に複数指定・`-` prefix 除外が可能 | `util="cbox"`, `util="cbox trim"`, `util="-trim"` |
|
|
59
60
|
| `exProps` | Lism Propsの処理をスキップして外部コンポーネントに直接渡すpropsオブジェクト | `exProps={{ size: '1em' }}` |
|
|
60
61
|
|
|
@@ -80,12 +81,12 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
80
81
|
// → p, fz は Lism が処理、size は HogeIcon に直接渡される
|
|
81
82
|
|
|
82
83
|
// set でセットクラスを付与(layout と同じ要領)
|
|
83
|
-
<Box set="
|
|
84
|
-
// → <div class="l--box set--
|
|
84
|
+
<Box set="var:bxsh" p="30">...</Box>
|
|
85
|
+
// → <div class="l--box set--var:bxsh -p:30">...</div>
|
|
85
86
|
|
|
86
87
|
// set を複数指定(スペース区切り)
|
|
87
|
-
<Stack set="
|
|
88
|
-
// → <div class="l--stack set--
|
|
88
|
+
<Stack set="var:bxsh var:hov" p="30">...</Stack>
|
|
89
|
+
// → <div class="l--stack set--var:bxsh set--var:hov -p:30">...</div>
|
|
89
90
|
|
|
90
91
|
// `-` prefix で除外(コンポーネント内部で適用済みの set を打ち消す用途)
|
|
91
92
|
<AccordionButton set="-plain">...</AccordionButton>
|
|
@@ -112,8 +113,8 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
112
113
|
| 値 | 出力形式 | 例 |
|
|
113
114
|
|------|------|-----|
|
|
114
115
|
| トークン値・プリセット値 | `-{prop}:{value}` クラスのみ | `fz='l'` → `class="-fz:l"` |
|
|
115
|
-
| `true`
|
|
116
|
-
| `:` で始まる値 |
|
|
116
|
+
| `true` | `-{prop}` クラスのみ(変数なし) | `bd` / `bd={true}` → `class="-bd"` |
|
|
117
|
+
| `:` で始まる値 | 強制的にクラス化 | `p=':hoge'` → `class="-p:hoge"` |
|
|
117
118
|
| その他の値(レスポンシブ対応プロパティ) | `-{prop}` + `--{prop}` | `fz='20px'` → `class="-fz"` + `style="--fz:20px"` |
|
|
118
119
|
| その他の値(レスポンシブ非対応プロパティ) | `style` 属性に直接出力 | `o='0.7'` → `style="opacity:0.7"` |
|
|
119
120
|
| その他の値(変数プロパティ) | `--{prop}` | `bdw='2px'` → `style="--bdw:2px"` (`border-width`としては出力されない) |
|
|
@@ -138,8 +139,8 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
138
139
|
<Lism bd bdc="#000" bdw="2px">...</Lism>
|
|
139
140
|
// 出力 → <div class="-bd" style="--bdc:#000;--bdw:2px">...</div>
|
|
140
141
|
|
|
141
|
-
//
|
|
142
|
-
<Lism p
|
|
142
|
+
// `true` でクラスだけ出力(変数は親から継承したい場合などに使う)
|
|
143
|
+
<Lism p bdrs>...</Lism>
|
|
143
144
|
// 出力 → <div class="-p -bdrs">...</div>
|
|
144
145
|
|
|
145
146
|
// `:` で強制ユーティリティクラス化
|
|
@@ -176,7 +177,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
|
176
177
|
|
|
177
178
|
### Trait Props
|
|
178
179
|
|
|
179
|
-
Trait
|
|
180
|
+
Trait クラス(`is--*` / `has--*`)を出力するためのプロパティ群です。
|
|
180
181
|
|
|
181
182
|
| Prop | 出力クラス |
|
|
182
183
|
|------|-----------|
|
|
@@ -189,7 +190,10 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
|
|
|
189
190
|
| `isContainer` | `is--container` |
|
|
190
191
|
| `isSide` | `is--side` |
|
|
191
192
|
| `isSkipFlow` | `is--skipFlow` |
|
|
192
|
-
| `
|
|
193
|
+
| `hasTransition` | `has--transition` |
|
|
194
|
+
| `hasGutter` | `has--gutter` |
|
|
195
|
+
| `hasSnap` | `has--snap` |
|
|
196
|
+
| `hasMask` | `has--mask` |
|
|
193
197
|
|
|
194
198
|
```jsx
|
|
195
199
|
// Trait Props の使用例
|
|
@@ -236,12 +240,13 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
|
|
|
236
240
|
| `<Divider>` | `a--divider` | 区切り線 |
|
|
237
241
|
| `<Decorator>` | `a--decorator` | 装飾要素(SCSS定義なし、クラス名のみ出力) |
|
|
238
242
|
|
|
243
|
+
|
|
239
244
|
各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
|
|
240
245
|
|
|
241
246
|
|
|
242
|
-
## Trait
|
|
247
|
+
## Trait Components
|
|
243
248
|
|
|
244
|
-
`<Lism isXxx
|
|
249
|
+
`<Lism isXxx>`のエイリアスコンポーネントです。`is--*` クラスを出力します。
|
|
245
250
|
|
|
246
251
|
| コンポーネント | 内部処理 | 出力クラス |
|
|
247
252
|
|-------------|------------|-----------|
|
|
@@ -250,7 +255,7 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
|
|
|
250
255
|
| `<Layer>` | `isLayer` | `is--layer` |
|
|
251
256
|
| `<BoxLink>` | `isBoxLink` | `is--boxLink` |
|
|
252
257
|
|
|
253
|
-
|
|
258
|
+
各 Trait クラスの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `trait-class/` 配下の各ファイルを参照。`has--*` については [trait-class.md](./trait-class.md) を参照。
|
|
254
259
|
|
|
255
260
|
|
|
256
261
|
## Layout Primitives
|
|
@@ -25,7 +25,6 @@ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
|
|
|
25
25
|
- [Tabs](#tabs)
|
|
26
26
|
- [ShapeDivider](#shapedivider)
|
|
27
27
|
- [DummyText](#dummytext)
|
|
28
|
-
- [DummyImage](#dummyimage)
|
|
29
28
|
- [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
|
|
30
29
|
|
|
31
30
|
[詳細](https://lism-css.com/ui/)
|
|
@@ -313,39 +312,33 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
|
|
|
313
312
|
```
|
|
314
313
|
|
|
315
314
|
|
|
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
315
|
## CLI でプロジェクトにコピーして使う
|
|
328
316
|
|
|
329
317
|
`@lism-css/ui` の UI コンポーネントは、CLI コマンドで自分のプロジェクトにソースコードをコピーして使うこともできます。コピーしたファイルは自由にカスタマイズ可能です。
|
|
330
318
|
|
|
319
|
+
コンポーネント名は `import` するときと同じ PascalCase で指定します。
|
|
320
|
+
|
|
331
321
|
```bash
|
|
332
322
|
# 初期設定(framework、出力先ディレクトリを対話的に設定)
|
|
333
|
-
npx lism-ui init
|
|
323
|
+
npx lism-cli ui init
|
|
334
324
|
|
|
335
325
|
# コンポーネントを追加
|
|
336
|
-
npx lism-ui add Button Modal
|
|
337
|
-
npx lism-ui add
|
|
326
|
+
npx lism-cli ui add Button Modal
|
|
327
|
+
npx lism-cli ui add NavMenu
|
|
328
|
+
npx lism-cli ui add --all # 全コンポーネントを追加
|
|
338
329
|
|
|
339
330
|
# 利用可能なコンポーネント一覧を表示
|
|
340
|
-
npx lism-ui list
|
|
331
|
+
npx lism-cli ui list
|
|
341
332
|
```
|
|
342
333
|
|
|
343
|
-
`init` で生成される `lism
|
|
334
|
+
`ui init` で生成される `lism.config.js` の `cli` セクション:
|
|
344
335
|
|
|
345
|
-
```
|
|
346
|
-
{
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
336
|
+
```js
|
|
337
|
+
export default {
|
|
338
|
+
cli: {
|
|
339
|
+
framework: 'react',
|
|
340
|
+
componentsDir: 'src/components/ui',
|
|
341
|
+
helperDir: 'src/components/ui/_helper',
|
|
342
|
+
},
|
|
343
|
+
};
|
|
351
344
|
```
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
## TOC
|
|
4
4
|
|
|
5
5
|
- [CSS Layer 構造](#css-layer-構造)
|
|
6
|
-
- [
|
|
6
|
+
- [プレフィックスとクラス分類](#プレフィックスとクラス分類)
|
|
7
|
+
- [Component Class(`c--`)](#component-classc--)
|
|
7
8
|
- [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
|
|
8
9
|
- [CSS の配置場所](#css-の配置場所)
|
|
9
10
|
|
|
10
11
|
[詳細](https://lism-css.com/docs/css-methodology/)
|
|
11
12
|
|
|
13
|
+
> **命名規則の詳細**: CSS変数名・クラス名・Property Class の `{prop}` / `{value}` の省略ルールについては [naming.md](./naming.md) を参照してください。
|
|
14
|
+
|
|
12
15
|
---
|
|
13
16
|
|
|
14
17
|
## CSS Layer 構造
|
|
@@ -20,8 +23,8 @@ Lism CSS は CSS Layers による詳細度管理を採用しています。
|
|
|
20
23
|
Settings(トークン定義)
|
|
21
24
|
→ @layer lism-base(Reset CSS・トークン・.set--クラス)
|
|
22
25
|
→ @layer reset(リセットCSS)
|
|
26
|
+
→ @layer lism-trait(.is-- / .has-- Trait Class)
|
|
23
27
|
→ @layer lism-primitive
|
|
24
|
-
→ @layer trait(.is-- Trait Primitive)
|
|
25
28
|
→ @layer layout(.l-- Layout Primitive)
|
|
26
29
|
→ @layer atomic(.a-- Atomic Primitive)
|
|
27
30
|
→ @layer lism-component(.c-- Component Class — BEM 構造を持つ UI 部品)
|
|
@@ -31,61 +34,133 @@ Settings(トークン定義)
|
|
|
31
34
|
```
|
|
32
35
|
|
|
33
36
|
|
|
34
|
-
##
|
|
37
|
+
## クラス分類とプレフィックス
|
|
35
38
|
|
|
36
|
-
[詳細](https://lism-css.com/docs/
|
|
39
|
+
[詳細](https://lism-css.com/docs/naming/)
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Lism CSSで定義されるクラスは、その役割とレイヤーの所属が決まっており、その分類によってプレフィックスが定められています。
|
|
39
42
|
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
43
|
+
| 分類 | 役割 | プレフィックス | 例 |
|
|
44
|
+
|---|---|---|---|
|
|
45
|
+
| Set Class | ベーススタイル上書き・変数提供 | `set--` | `.set--plain`, `.set--revert`, `.set--var:hov`, `.set--var:bxsh` |
|
|
46
|
+
| Layout Primitive | レイアウトの構成単位となる Primitive | `l--` | `.l--grid`, `.l--flex`, `.l--stack` |
|
|
47
|
+
| Atomic Primitive | レイアウトの最小単位となる Primitive | `a--` | `.a--icon`, `.a--divider` |
|
|
48
|
+
| Component Class | BEM 構造を持つ UI 部品 | `c--` | `.c--button`, `.c--accordion` |
|
|
49
|
+
| `is--` Trait | 要素に役割(〜である)を宣言 | `is--` | `.is--container`, `.is--wrapper`, `.is--layer`, `.is--boxLink` |
|
|
50
|
+
| `has--` Trait | 要素に機能(〜を持つ)を付与 | `has--` | `.has--transition`, `.has--gutter`, `.has--snap`, `.has--mask` |
|
|
51
|
+
| Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `.u--cbox`, `.u--trim`, `.u--collapseGrid` |
|
|
52
|
+
| Property Class | 単一プロパティの制御 | `-` | `.-fz:l`, `.-p:20`, `.-d:none` |
|
|
49
53
|
|
|
50
54
|
**併用ルール:**
|
|
51
55
|
- `.l--` と `.c--` は併用OK(例: `<div class="l--flex c--nav">`)
|
|
52
56
|
- 同カテゴリ内の Primitive 併用は不可(例: `.l--flex` と `.l--grid`、`.a--icon` と `.a--divider` は同要素に付けない)
|
|
53
57
|
- `.l--` × `.a--` は非推奨(役割的に同居しない想定)
|
|
54
|
-
- `.is--` 同士は併用OK(Trait は複数併用できる)
|
|
55
|
-
- `.is--` × `.l--` / `.a--` も併用OK
|
|
58
|
+
- `.is--` / `.has--` 同士は併用OK(Trait は複数併用できる)
|
|
59
|
+
- `.is--` / `.has--` × `.l--` / `.a--` も併用OK
|
|
56
60
|
- `c--` の Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし以下は許容:
|
|
57
61
|
- Block と自身の Modifier: `.c--button.c--button--outline`
|
|
58
62
|
- Block と他 Block の Element: `.c--xxx.c--yyy_elem`
|
|
59
63
|
- 子要素: `.c--card_header`, `.c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
|
|
60
64
|
|
|
65
|
+
**`is--` と `has--` の判定軸:**
|
|
66
|
+
|
|
67
|
+
| | `is--` | `has--` |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| 意味 | 〜である(役割・存在の宣言) | 〜を持つ(機能の付与) |
|
|
70
|
+
| CSS 変数 | 必須ではない | 必須(カスタマイズポイントを提供) |
|
|
71
|
+
|
|
61
72
|
**記述順序:**
|
|
62
|
-
class
|
|
73
|
+
class 属性にクラスを直接記述する場合は、以下の順序で並べてください。
|
|
63
74
|
|
|
64
75
|
```
|
|
65
|
-
[customClass] [c
|
|
76
|
+
[customClass] [c--] [a--] [l--] [set--] [is--] [has--] [u--] [-]
|
|
66
77
|
```
|
|
67
78
|
|
|
68
79
|
| # | 区分 | 例 |
|
|
69
80
|
|---|---|---|
|
|
70
|
-
| 1 | 独自クラス(`customClass`) | `
|
|
71
|
-
| 2 | Component
|
|
72
|
-
| 3 |
|
|
73
|
-
| 4 |
|
|
74
|
-
| 5 | Set Class(`set--`) | `set--hov`, `set--
|
|
75
|
-
| 6 |
|
|
76
|
-
| 7 |
|
|
81
|
+
| 1 | 独自クラス(`customClass`) | `z--header`, `hoge` |
|
|
82
|
+
| 2 | Component(`c--`) | `c--box`, `c--box--primary` |
|
|
83
|
+
| 3 | Atomic Primitive(`a--`) | `a--icon`, `a--divider` |
|
|
84
|
+
| 4 | Layout Primitive(`l--`) | `l--flex`, `l--columns` |
|
|
85
|
+
| 5 | Set Class(`set--`) | `set--var:hov`, `set--var:bxsh` |
|
|
86
|
+
| 6 | Trait Class 役割宣言(`is--`) | `is--wrapper`, `is--layer` |
|
|
87
|
+
| 7 | Trait Class 機能付与(`has--`) | `has--transition`, `has--gutter` |
|
|
88
|
+
| 8 | Utility Class(`u--`) | `u--cbox`, `u--trim` |
|
|
89
|
+
| 9 | Property Class(`-`) | `-p:20`, `-bgc:base-2`, `-hov:-c` |
|
|
77
90
|
|
|
78
91
|
```html
|
|
79
92
|
<!-- OK -->
|
|
80
93
|
<div class="c--nav l--flex -p:20 -g:20">...</div>
|
|
81
94
|
|
|
82
|
-
<!-- NG: Property Class が先 -->
|
|
95
|
+
<!-- NG: Property Class が先 になっている -->
|
|
83
96
|
<div class="-p:20 -g:20 l--flex c--nav">...</div>
|
|
84
97
|
```
|
|
85
98
|
|
|
86
99
|
なお、`class` 属性内の並び順は CSS の適用結果(詳細度・カスケード順)には影響しません。この順序はあくまで可読性と一貫性のための整理です。
|
|
87
100
|
|
|
88
101
|
|
|
102
|
+
## Component Class(`c--`)
|
|
103
|
+
|
|
104
|
+
`c--` プレフィックスで定義する **Component クラス** は、Primitive を組み合わせて作られた具体的な UI 部品です。`@layer lism-component` に配置され、コアの `lism-css` には含まれず、`@lism-css/ui` パッケージやユーザー定義として提供されます。
|
|
105
|
+
|
|
106
|
+
`c--` クラスは BEM 構造(Block / Modifier / Element)を持つことができ、それぞれ次の形式で定義します。
|
|
107
|
+
|
|
108
|
+
| 分類 | 形式 | 例 |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| Block | `.c--{name}` | `.c--button`, `.c--card` |
|
|
111
|
+
| Modifier | `.c--{name}--{modifier}` | `.c--button--outline` |
|
|
112
|
+
| Element | `.c--{name}_{element}` | `.c--card_header`, `.c--card_body` |
|
|
113
|
+
|
|
114
|
+
- Modifier は Block と併記して使用: `.c--button.c--button--outline`
|
|
115
|
+
- Element は `_`(アンダースコア)一つ区切り
|
|
116
|
+
- Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし次は許容される:
|
|
117
|
+
- Block と自身の Modifier: `.c--xxx.c--xxx--variant`
|
|
118
|
+
- Block と他 Block の Element: `.c--xxx.c--yyy_elem`
|
|
119
|
+
- `a--` / `l--` には `variant` の BEM 展開は適用されない**
|
|
120
|
+
|
|
121
|
+
`c--` を使った独自コンポーネントを使う場合でも、他の Primitive クラス(`.l--`, `.is--`)や Property Class(`-{prop}:{value}`)との組み合わせを前提とした設計にすることで CSS の記述量を削減できます。`c--` クラスにスタイルが全くなく、HTML 側での可視性を高める名前付けのためだけに利用しても構いません。
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
### 作成例
|
|
125
|
+
|
|
126
|
+
`l--stack` と併用する前提でのカスタムクラス例:
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
@layer lism-component {
|
|
130
|
+
.c--myCard {
|
|
131
|
+
gap: var(--s20);
|
|
132
|
+
padding: var(--s30);
|
|
133
|
+
border-radius: var(--bdrs--20);
|
|
134
|
+
box-shadow: var(--bxsh--20);
|
|
135
|
+
border: 1px solid currentColor;
|
|
136
|
+
/* ... */
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
```html
|
|
142
|
+
<div class="c--myCard l--stack">
|
|
143
|
+
...
|
|
144
|
+
</div>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
素の HTML サイトではこのように `c--` クラスに CSS を書いてスタイリングしても問題ありませんが、React などでコンポーネントを作成できる場合は、特別な理由がない限り Property Class を活用してください。
|
|
148
|
+
|
|
149
|
+
```jsx
|
|
150
|
+
export default function MyCard(props) {
|
|
151
|
+
return <Stack lismClass="c--myCard" g="20" p="30" bdrs="20" bxsh="20" bd {...props} />;
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```css
|
|
156
|
+
@layer lism-component {
|
|
157
|
+
.c--myCard {
|
|
158
|
+
/* 複雑なスタイルがあれば css で書く */
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
|
|
89
164
|
## カスタムCSS を追加する場合
|
|
90
165
|
|
|
91
166
|
独自のスタイルを追加する場合は、対象に合った Lism の CSS Layer 内に記述してください。
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# カスタマイズ
|
|
2
|
+
|
|
3
|
+
`lism-css` パッケージから読み込む CSS や、コンポーネントが受け付ける Props の挙動を上書きしてカスタマイズする方法をまとめます。
|
|
4
|
+
|
|
5
|
+
## TOC
|
|
6
|
+
|
|
7
|
+
- [`@layer` をオフにする](#layer-をオフにする)
|
|
8
|
+
- [SCSS でのカスタマイズ](#scss-でのカスタマイズ)
|
|
9
|
+
- [`lism.config.js` でのカスタマイズ](#lismconfigjs-でのカスタマイズ)
|
|
10
|
+
- [追加スタイルを読み込ませる方法](#追加スタイルを読み込ませる方法)
|
|
11
|
+
|
|
12
|
+
[詳細](https://lism-css.com/docs/customize/)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## `@layer` をオフにする
|
|
17
|
+
|
|
18
|
+
`lism-css/main.css` の代わりに `lism-css/main_no_layer.css` を読み込むだけで、`@layer` を使わない CSS に切り替えられます。
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
// 通常
|
|
22
|
+
import 'lism-css/main.css';
|
|
23
|
+
|
|
24
|
+
// @layer なしのCSSを読み込む場合はこちら
|
|
25
|
+
import 'lism-css/main_no_layer.css';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`@layer` のオン・オフは SCSS 変数では管理されません。**読み込むファイル自体を切り替える**点に注意してください。
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
## SCSS でのカスタマイズ
|
|
32
|
+
|
|
33
|
+
`lism-css/scss/_setting.scss` で定義された変数を `@use ... with (...)` で上書きできます。
|
|
34
|
+
上書き定義をしてから `lism-css/scss/main.scss` を読み込むことでカスタマイズが反映されます。
|
|
35
|
+
|
|
36
|
+
ソース: [`_setting.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/_setting.scss)
|
|
37
|
+
|
|
38
|
+
### 上書き可能な変数
|
|
39
|
+
|
|
40
|
+
| 変数 | 用途 | デフォルト |
|
|
41
|
+
|------|------|-----------|
|
|
42
|
+
| `$breakpoints` | ブレイクポイント数値の定義 | `('sm': '480px', 'md': '800px', 'lg': '1120px')` |
|
|
43
|
+
| `$common_support_bp` | 主要な Property Class が共通サポートするブレイクポイント上限 | `'md'` |
|
|
44
|
+
| `$is_container_query` | コンテナクエリで出力するか(`1` = container query, `0` = media query) | `1` |
|
|
45
|
+
| `$default_important` | Property Class にデフォルトで `!important` を付与するか | `0` |
|
|
46
|
+
| `$props` | Property Class ごとの個別出力設定 | `prop-config` のデフォルト |
|
|
47
|
+
|
|
48
|
+
### 基本フォーマット
|
|
49
|
+
|
|
50
|
+
```scss
|
|
51
|
+
// 1. 設定変数を上書き
|
|
52
|
+
@use '../path-to/node_modules/lism-css/scss/setting' with (
|
|
53
|
+
$breakpoints: (
|
|
54
|
+
'sm': '400px', // 個別キーの上書き可
|
|
55
|
+
),
|
|
56
|
+
$common_support_bp: 'lg',
|
|
57
|
+
$is_container_query: 0,
|
|
58
|
+
$default_important: 1,
|
|
59
|
+
$props: (
|
|
60
|
+
// 個別 Prop の設定(後述)
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
// 2. main.scss を読み込む(@layer なしにする場合は main_no_layer)
|
|
65
|
+
@use '../path-to/node_modules/lism-css/scss/main';
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> Astro の場合、`../path-to/node_modules/` 部分は不要で `lism-css/scss/setting` のように書けます。
|
|
69
|
+
|
|
70
|
+
### `$props` の個別カスタマイズ
|
|
71
|
+
|
|
72
|
+
各 Property Class について、出力範囲やユーティリティクラスを追加できます。
|
|
73
|
+
|
|
74
|
+
```scss
|
|
75
|
+
@use '../path-to/node_modules/lism-css/scss/setting' with (
|
|
76
|
+
$props: (
|
|
77
|
+
'fz': (
|
|
78
|
+
important: 1, // .-fz:* に !important を付与
|
|
79
|
+
),
|
|
80
|
+
'h': (
|
|
81
|
+
bp: 0, // .-h_sm 等のブレイクポイント版を出力しない
|
|
82
|
+
),
|
|
83
|
+
'p': (
|
|
84
|
+
bp: 'lg', // .-p_sm / .-p_md / .-p_lg まで出力
|
|
85
|
+
utilities: (
|
|
86
|
+
'box': '2em', // .-p:box { --p: 2em } を追加
|
|
87
|
+
),
|
|
88
|
+
),
|
|
89
|
+
)
|
|
90
|
+
);
|
|
91
|
+
@use '../path-to/node_modules/lism-css/scss/main';
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 注意点
|
|
95
|
+
|
|
96
|
+
SCSS を直接読み込む構成では、コンパイル時に `lism-css` 本体 CSS と読み込み順がずれる可能性があります。意図しない上書きが起きないよう、レイヤー順を確認してください。
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## `lism.config.js` でのカスタマイズ
|
|
100
|
+
|
|
101
|
+
プロジェクトのルート直下に `lism.config.js` を置くことで、**コンポーネントの挙動**(受け付ける props の値や、出力されるクラス名)をカスタマイズできます。
|
|
102
|
+
|
|
103
|
+
> **注意**: `lism.config.js` は HTML 出力(クラス名)を変えるだけで、追加されたクラスに対する CSS は別途読み込ませる必要があります([追加スタイルを読み込ませる方法](#追加スタイルを読み込ませる方法) を参照)。
|
|
104
|
+
|
|
105
|
+
### フォーマット
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
// lism.config.js
|
|
109
|
+
export default {
|
|
110
|
+
props: {
|
|
111
|
+
// Property Class の出力をカスタマイズ
|
|
112
|
+
},
|
|
113
|
+
tokens: {
|
|
114
|
+
// トークン値を追加
|
|
115
|
+
},
|
|
116
|
+
traits: {
|
|
117
|
+
// Trait(is--* / has--*)用の props を追加
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
デフォルト値は以下を参照:
|
|
123
|
+
|
|
124
|
+
- props: [`config/defaults/props.ts`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts)
|
|
125
|
+
- tokens: [`config/defaults/tokens.ts`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/tokens.ts)
|
|
126
|
+
- traits: [`config/defaults/traits.ts`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/traits.ts)
|
|
127
|
+
|
|
128
|
+
### カスタマイズ例
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
// lism.config.js
|
|
132
|
+
import DEFAULT_CONFIG from 'lism-css/default-config';
|
|
133
|
+
const { props, tokens } = DEFAULT_CONFIG;
|
|
134
|
+
|
|
135
|
+
export default {
|
|
136
|
+
props: {
|
|
137
|
+
d: { presets: [...(props.d.presets || []), 'flex', 'grid'] },
|
|
138
|
+
p: { utils: { box: '2em' } },
|
|
139
|
+
},
|
|
140
|
+
tokens: {
|
|
141
|
+
bdrs: [...(tokens.bdrs || []), '5'],
|
|
142
|
+
},
|
|
143
|
+
traits: {
|
|
144
|
+
isHoge: 'is--hoge',
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
これによってコンポーネント側で次のような挙動が追加されます:
|
|
150
|
+
|
|
151
|
+
| 入力 | 出力されるクラス |
|
|
152
|
+
|------|----------------|
|
|
153
|
+
| `d="flex"` | `-d:flex` |
|
|
154
|
+
| `d="grid"` | `-d:grid` |
|
|
155
|
+
| `p="box"` | `-p:box` |
|
|
156
|
+
| `bdrs="5"` | `-bdrs:5` |
|
|
157
|
+
| `isHoge` | `is--hoge` |
|
|
158
|
+
|
|
159
|
+
```jsx
|
|
160
|
+
<Box p="box" d="flex" bdrs="5" isHoge>Box</Box>
|
|
161
|
+
// → <div class="l--box is--hoge -p:box -d:flex -bdrs:5">Box</div>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
## 追加スタイルを読み込ませる方法
|
|
166
|
+
|
|
167
|
+
`lism.config.js` で props を増やしただけでは、対応するユーティリティクラスのスタイルは存在しません。次のいずれかでスタイルを追加してください。
|
|
168
|
+
|
|
169
|
+
### 1. CLI コマンドで CSS を再ビルド
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npx lism-css build
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
`lism.config.js` の内容に基づいて `lism-css/main.css` を再生成します。上記カスタマイズ例だと、以下のスタイルが自動生成されます:
|
|
176
|
+
|
|
177
|
+
```css
|
|
178
|
+
.-d\:flex { display: flex; }
|
|
179
|
+
.-d\:grid { display: grid; }
|
|
180
|
+
.-p\:box { padding: 2em; }
|
|
181
|
+
.-bdrs\:5 { border-radius: var(--bdrs--5); }
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
> **注意**:
|
|
185
|
+
> - トークン CSS 変数(例: `--bdrs--5`)と `is--*` クラスのスタイルは自動生成されないため、手動で追加してください。
|
|
186
|
+
> - `lism-css` パッケージ自体を上書きする処理のため、**パッケージ更新ごとに再実行**が必要です。
|
|
187
|
+
|
|
188
|
+
### 2. 手動で CSS を追記
|
|
189
|
+
|
|
190
|
+
CLI を使わず、追加クラス分の CSS をプロジェクト側で書いて読み込ませる方法でも問題ありません。
|
|
191
|
+
|
|
192
|
+
```css
|
|
193
|
+
:root { --bdrs--5: 0.125rem; }
|
|
194
|
+
.is--hoge { /* ... */ }
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### 3. SCSS で `lism.config.js` と整合させる
|
|
198
|
+
|
|
199
|
+
SCSS 経由で読み込む構成なら、`lism.config.js` と同じ追加分を `$props` の `utilities` 設定として書いておけば、ビルドコマンドなしで反映できます。
|
|
200
|
+
|
|
201
|
+
```scss
|
|
202
|
+
@use '../path-to/node_modules/lism-css/scss/setting' with (
|
|
203
|
+
$props: (
|
|
204
|
+
'd': (
|
|
205
|
+
utilities: (
|
|
206
|
+
'flex': 'flex',
|
|
207
|
+
'grid': 'grid',
|
|
208
|
+
),
|
|
209
|
+
),
|
|
210
|
+
'p': ( utilities: ( 'box': '2em' ) ),
|
|
211
|
+
'bdrs': ( utilities: ( '5': 'var(--bdrs--5)' ) ),
|
|
212
|
+
)
|
|
213
|
+
);
|
|
214
|
+
@use '../path-to/node_modules/lism-css/scss/main';
|
|
215
|
+
|
|
216
|
+
// トークン追記
|
|
217
|
+
@layer lism-base {
|
|
218
|
+
:root { --bdrs--5: 0.125rem; }
|
|
219
|
+
}
|
|
220
|
+
```
|