@lism-css/mcp 0.14.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 +104 -55
- package/dist/data/guides/SKILL.md +27 -13
- package/dist/data/guides/base-styles.md +2 -0
- package/dist/data/guides/components-core.md +17 -13
- package/dist/data/guides/components-ui.md +16 -11
- package/dist/data/guides/css-rules.md +29 -20
- package/dist/data/guides/customize.md +220 -0
- package/dist/data/guides/naming.md +16 -2
- package/dist/data/guides/primitive-class.md +3 -26
- package/dist/data/guides/primitives/a--decorator.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--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 +46 -80
- package/dist/data/guides/set-class.md +63 -78
- package/dist/data/guides/tokens.md +18 -8
- 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 +4 -3
- package/dist/tools/get-guide.js +1 -1
- package/package.json +2 -2
|
@@ -23,8 +23,8 @@ Lism CSS は CSS Layers による詳細度管理を採用しています。
|
|
|
23
23
|
Settings(トークン定義)
|
|
24
24
|
→ @layer lism-base(Reset CSS・トークン・.set--クラス)
|
|
25
25
|
→ @layer reset(リセットCSS)
|
|
26
|
+
→ @layer lism-trait(.is-- / .has-- Trait Class)
|
|
26
27
|
→ @layer lism-primitive
|
|
27
|
-
→ @layer trait(.is-- Trait Primitive)
|
|
28
28
|
→ @layer layout(.l-- Layout Primitive)
|
|
29
29
|
→ @layer atomic(.a-- Atomic Primitive)
|
|
30
30
|
→ @layer lism-component(.c-- Component Class — BEM 構造を持つ UI 部品)
|
|
@@ -34,38 +34,46 @@ Settings(トークン定義)
|
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## クラス分類とプレフィックス
|
|
38
38
|
|
|
39
|
-
[詳細](https://lism-css.com/docs/
|
|
39
|
+
[詳細](https://lism-css.com/docs/naming/)
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Lism CSSで定義されるクラスは、その役割とレイヤーの所属が決まっており、その分類によってプレフィックスが定められています。
|
|
42
42
|
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
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` |
|
|
52
53
|
|
|
53
54
|
**併用ルール:**
|
|
54
55
|
- `.l--` と `.c--` は併用OK(例: `<div class="l--flex c--nav">`)
|
|
55
56
|
- 同カテゴリ内の Primitive 併用は不可(例: `.l--flex` と `.l--grid`、`.a--icon` と `.a--divider` は同要素に付けない)
|
|
56
57
|
- `.l--` × `.a--` は非推奨(役割的に同居しない想定)
|
|
57
|
-
- `.is--` 同士は併用OK(Trait は複数併用できる)
|
|
58
|
-
- `.is--` × `.l--` / `.a--` も併用OK
|
|
58
|
+
- `.is--` / `.has--` 同士は併用OK(Trait は複数併用できる)
|
|
59
|
+
- `.is--` / `.has--` × `.l--` / `.a--` も併用OK
|
|
59
60
|
- `c--` の Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし以下は許容:
|
|
60
61
|
- Block と自身の Modifier: `.c--button.c--button--outline`
|
|
61
62
|
- Block と他 Block の Element: `.c--xxx.c--yyy_elem`
|
|
62
63
|
- 子要素: `.c--card_header`, `.c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
|
|
63
64
|
|
|
65
|
+
**`is--` と `has--` の判定軸:**
|
|
66
|
+
|
|
67
|
+
| | `is--` | `has--` |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| 意味 | 〜である(役割・存在の宣言) | 〜を持つ(機能の付与) |
|
|
70
|
+
| CSS 変数 | 必須ではない | 必須(カスタマイズポイントを提供) |
|
|
71
|
+
|
|
64
72
|
**記述順序:**
|
|
65
73
|
class 属性にクラスを直接記述する場合は、以下の順序で並べてください。
|
|
66
74
|
|
|
67
75
|
```
|
|
68
|
-
[customClass] [c--] [a--] [l--] [is--] [
|
|
76
|
+
[customClass] [c--] [a--] [l--] [set--] [is--] [has--] [u--] [-]
|
|
69
77
|
```
|
|
70
78
|
|
|
71
79
|
| # | 区分 | 例 |
|
|
@@ -74,10 +82,11 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
|
|
|
74
82
|
| 2 | Component(`c--`) | `c--box`, `c--box--primary` |
|
|
75
83
|
| 3 | Atomic Primitive(`a--`) | `a--icon`, `a--divider` |
|
|
76
84
|
| 4 | Layout Primitive(`l--`) | `l--flex`, `l--columns` |
|
|
77
|
-
| 5 |
|
|
78
|
-
| 6 |
|
|
79
|
-
| 7 |
|
|
80
|
-
| 8 |
|
|
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` |
|
|
81
90
|
|
|
82
91
|
```html
|
|
83
92
|
<!-- OK -->
|
|
@@ -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
|
+
```
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
| 形式 | 用途 | 例 |
|
|
46
46
|
|------|------|-----|
|
|
47
47
|
| `--{target}-{prop}` | 要素・クラスに対するプロパティ(`:root`で上書き可) | `--link-td`, `--headings-ff` |
|
|
48
|
-
| `--{propName}` |
|
|
48
|
+
| `--{propName}` | クラス自身の主要機能を制御する変数。要素側で値が初期化され、`:root` からは初期値の定義ができないもの | `--sideW`, `--mainW` |
|
|
49
49
|
| `--_{item}-{propName}` | `c--` の子要素プロパティ | `--_icon-size` |
|
|
50
50
|
| `--_{varName}` | 状態管理用の内部変数 | `--_isHov`, `--_notHov` |
|
|
51
51
|
|
|
@@ -57,17 +57,31 @@
|
|
|
57
57
|
- Component: `c--`
|
|
58
58
|
- Atomic Primitives: `a--`
|
|
59
59
|
- Layout Primitives: `l--`
|
|
60
|
-
- Trait
|
|
60
|
+
- Trait(役割宣言): `is--`
|
|
61
|
+
- Trait(機能付与): `has--`
|
|
61
62
|
- Set Class: `set--`
|
|
62
63
|
- Utility Class: `u--`
|
|
63
64
|
|
|
64
65
|
プレフィックスに続く名称は camelCase(例: `c--myComponent`)。
|
|
65
66
|
|
|
67
|
+
**使い分けの判断軸:**
|
|
68
|
+
|
|
69
|
+
| プレフィックス | 責務 | 代表例 |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| `set--` | HTML 要素の基礎スタイリング / 変数セット | `set--plain`, `set--revert`, `set--var:hov`, `set--var:bxsh` |
|
|
72
|
+
| `is--` | 〜である(役割・存在の宣言)。CSS 変数は必須ではない | `is--container`, `is--wrapper`, `is--layer` |
|
|
73
|
+
| `has--` | 〜を持つ(単一機能 trait の付与)。CSS 変数でカスタマイズ可 | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
|
|
74
|
+
| `u--` | 装飾的効果(単独 or 子要素の装飾) | `u--trim`, `u--cbox`, `u--collapseGrid` |
|
|
75
|
+
|
|
76
|
+
- `set--` は `@lism-base` 層で HTML 要素の基礎スタイル・変数を提供するもの。
|
|
77
|
+
- `is--` / `has--` は `@lism-trait` 層に属する。
|
|
78
|
+
|
|
66
79
|
Property Class の形式:
|
|
67
80
|
|
|
68
81
|
- 特定の値とセット: `-{prop}:{value}`
|
|
69
82
|
- `--{prop}` 変数を受け取る: `-{prop}`
|
|
70
83
|
- ブレークポイント値を受け取る: `-{prop}_{bp}`
|
|
84
|
+
- 修飾子 + Property Class 合成: `-{modifier}:-{prop}`(例: `-hov:-c` は `-c` の hover バリアント)
|
|
71
85
|
|
|
72
86
|
|
|
73
87
|
## `{prop}` の省略ルール
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Primitive クラス
|
|
2
2
|
|
|
3
|
-
Lism CSS では、レイアウトを組み立てる小さな積み木として **Primitive クラス**(`
|
|
3
|
+
Lism CSS では、レイアウトを組み立てる小さな積み木として **Primitive クラス**(`l--` / `a--`)を提供します。
|
|
4
|
+
これらは `@layer lism-primitive` に属します(サブレイヤーは `layout` / `atomic`)。
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
## TOC
|
|
7
8
|
|
|
8
9
|
- [プレフィックス一覧](#プレフィックス一覧)
|
|
9
|
-
- [Trait Primitive(`is--`)](#trait-primitiveis--)
|
|
10
10
|
- [Layout Primitive(`l--`)](#layout-primitivel--)
|
|
11
11
|
- [Atomic Primitive(`a--`)](#atomic-primitivea--)
|
|
12
12
|
|
|
@@ -18,33 +18,10 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
|
|
|
18
18
|
|
|
19
19
|
| プレフィックス | 種類 | サブレイヤー | 役割 |
|
|
20
20
|
|--------------|------|------------|------|
|
|
21
|
-
| `is--` | Trait Primitive | `lism-primitive.trait` | 要素に静的な構造的特性を付与する汎用クラス |
|
|
22
21
|
| `l--` | Layout Primitive | `lism-primitive.layout` | レイアウトの構成単位となる Primitive |
|
|
23
22
|
| `a--` | Atomic Primitive | `lism-primitive.atomic` | レイアウトの最小単位(アイコン・区切り線等) |
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
- `is--` は他のすべての Primitive と併用可能(複数の `is--` 同士もOK)
|
|
27
|
-
- 同カテゴリ内の併用は不可(例: `l--flex` と `l--grid` は同要素に付けない)
|
|
28
|
-
- `a--` / `l--` には `variant` の BEM 展開は適用されない(BEM Modifier は `c--` 専用)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Trait Primitive(`is--`)
|
|
32
|
-
|
|
33
|
-
[詳細](https://lism-css.com/docs/primitives/#trait-primitives)
|
|
34
|
-
|
|
35
|
-
要素に**静的な構造的特性 (trait)** を付与するクラスです。他の Primitive / Component と自由に組み合わせられます。
|
|
36
|
-
|
|
37
|
-
| クラス | 用途 |
|
|
38
|
-
|--------|------|
|
|
39
|
-
| `is--container` | コンテナクエリの基準要素を定義する(`container-type: inline-size`を付与する)。Lism のレスポンシブ機能の判定基準となるラッパーに付与する |
|
|
40
|
-
| `is--wrapper` | 直下の子要素のコンテンツ幅を一括で制限する。`-contentSize:s` / `-contentSize:l` で事前定義したプリセットサイズを指定可能(デフォルト: `--sz--m`)。セクション・ヘッダー・フッター・記事コンテンツなどで、共通したコンテンツ幅を使用する |
|
|
41
|
-
| `is--layer` | 親要素全体に被さる絶対配置レイヤー(`position: absolute; inset: 0;`)。背景画像・カラーオーバーレイ・フィルターレイヤー・コンテンツ等を重ねて表示する |
|
|
42
|
-
| `is--boxLink` | ボックス全体をクリッカブルなリンク領域にする。自身を`a`タグにして利用するか、もしくは自身を`div`にして内部の`a`タグに`is--coverLink`を付与して使う |
|
|
43
|
-
| `is--coverLink` | 親要素全体に被さるクリック領域を持つリンク(`::before` を `inset: 0` で広げる)。`is--boxLink` と併用する |
|
|
44
|
-
| `is--skipFlow` | `l--flow` 直下で使用し、次の兄弟要素のフロー余白をゼロにする。`l--flow`の中にあるが`position:absolute`にしたい要素などに使用する |
|
|
45
|
-
| `is--side` | `l--sideMain` 直下で使用し、サイド側の要素であることを示す |
|
|
46
|
-
|
|
47
|
-
Lism コンポーネントでは `isContainer`, `isLayer` 等の Props として利用できます。(例: `<Lism isContainer>`)
|
|
24
|
+
併用ルールは [css-rules.md](./css-rules.md#プレフィックスとクラス分類) を参照してください。
|
|
48
25
|
|
|
49
26
|
|
|
50
27
|
## Layout Primitive(`l--`)
|
|
@@ -51,7 +51,7 @@ Property Class や Lism Props で Flex 関連プロパティ(`g`, `fxw`, `jc`,
|
|
|
51
51
|
|
|
52
52
|
### 子要素の Flex プロパティ
|
|
53
53
|
|
|
54
|
-
子要素側も `fx`(flex shorthand), `fxb`(flex-basis), `fxg`(flex-grow), `
|
|
54
|
+
子要素側も `fx`(flex shorthand), `fxb`(flex-basis), `fxg`(flex-grow), `fxsh`(flex-shrink)などで個別制御できます。
|
|
55
55
|
|
|
56
56
|
```jsx
|
|
57
57
|
<Flex g="20">
|
|
@@ -89,6 +89,6 @@
|
|
|
89
89
|
|
|
90
90
|
## 関連プリミティブ
|
|
91
91
|
|
|
92
|
-
- [is--layer](
|
|
92
|
+
- [is--layer](../trait-class/is--layer.md) — `l--frame` 内のオーバーレイ配置に使用
|
|
93
93
|
- [l--center](./l--center.md) — フレーム内でテキストを中央配置する時に組み合わせる
|
|
94
94
|
- [a--icon](./a--icon.md) — アイコン画像の表示(`src` 指定)
|
|
@@ -99,4 +99,4 @@
|
|
|
99
99
|
- [l--grid](./l--grid.md) — ブレイクポイント切り替え型の2カラム構築に使用
|
|
100
100
|
- [l--fluidCols](./l--fluidCols.md) — カラム幅ベースの自動段組
|
|
101
101
|
- [l--switchCols](./l--switchCols.md) — ブレイクポイント一括切り替え型カラム
|
|
102
|
-
- [is--container](
|
|
102
|
+
- [is--container](../trait-class/is--container.md) — レスポンシブ Property Class 利用時に必要
|
|
@@ -29,9 +29,34 @@ Lism CSS はコンテナクエリをデフォルトで採用しています。
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
**仕組み:**
|
|
32
|
-
|
|
33
|
-
2
|
|
34
|
-
|
|
32
|
+
- BPクラス `-{prop}_{bp}` は `@container (min-width: ...)` 内で発火し、`--{prop}_{bp}` 変数で切り替え先の値を指定
|
|
33
|
+
- 出力形式はプロパティによって 2 パターン(基本 / 例外)
|
|
34
|
+
|
|
35
|
+
**基本パターン** — BP 用変数を直接読む:
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
.-d { display: var(--d) }
|
|
39
|
+
@container (min-width: 480px) {
|
|
40
|
+
.-d_sm { display: var(--d_sm) }
|
|
41
|
+
}
|
|
42
|
+
@container (min-width: 800px) {
|
|
43
|
+
.-d_md { display: var(--d_md) }
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**例外パターン** — `alwaysVar` 対応の `c`, `bgc`, `p`, `m`, `bdrs` のみ。ベース変数 `--p` が常に現在適用中の値を指すように上書きされる(state 変数扱い):
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
.-p { padding: var(--p) }
|
|
51
|
+
@container (min-width: 480px) {
|
|
52
|
+
.-p_sm { padding: var(--p); --p: var(--p_sm) !important }
|
|
53
|
+
}
|
|
54
|
+
@container (min-width: 800px) {
|
|
55
|
+
.-p_md { padding: var(--p); --p: var(--p_md) !important }
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
ソースコードの [props.ts](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts) で `alwaysVar: 1` がセットされているプロパティがこのパターンで出力されます。
|
|
35
60
|
|
|
36
61
|
## Lism コンポーネントでの指定
|
|
37
62
|
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# -bd(ボーダー)
|
|
2
|
+
|
|
3
|
+
Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管理される特殊仕様の Property Class。`-bd` または `-bd-{side}` クラスで変数管理を有効化し、`bds` / `bdc` / `bdw` Prop で個別に上書きする。
|
|
4
|
+
|
|
5
|
+
## 基本情報
|
|
6
|
+
|
|
7
|
+
- クラス名: `-bd` / `-bd-{side}` / `-bds:*` / `-bdc:*` / `-bdw` など
|
|
8
|
+
- Lism props: `bd`, `bd-{side}`, `bds`, `bdc`, `bdw`
|
|
9
|
+
- SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/props/_border.scss
|
|
10
|
+
- ドキュメント(人間向け): https://lism-css.com/docs/property-class/bd/
|
|
11
|
+
|
|
12
|
+
## 仕組み
|
|
13
|
+
|
|
14
|
+
`.-bd` または `.-bd-{side}` クラスが付くと、以下の初期値がセットされる。
|
|
15
|
+
|
|
16
|
+
```scss
|
|
17
|
+
:where(.-bd, [class*=" -bd-"], [class^="-bd-"]) {
|
|
18
|
+
--bds: solid;
|
|
19
|
+
--bdw: 1px;
|
|
20
|
+
--bdc: var(--divider);
|
|
21
|
+
border-width: var(--bdw);
|
|
22
|
+
border-color: var(--bdc);
|
|
23
|
+
}
|
|
24
|
+
.-bd { border-style: var(--bds); }
|
|
25
|
+
.-bd-x { border-inline-style: var(--bds); }
|
|
26
|
+
.-bd-y { border-block-style: var(--bds); }
|
|
27
|
+
/* ...各 side ごとに style を適用 */
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`border-width` / `border-color` は全方向で共通出力され、`border-style` だけ `.-bd` または `.-bd-{side}` が出現している方向に適用される仕組み。`--bdw` を `0 0 1px 0.5em` のような複数値にすれば、方向ごとに太さを変えられる。
|
|
31
|
+
|
|
32
|
+
## 方向指定クラス
|
|
33
|
+
|
|
34
|
+
| Prop | CSS プロパティ |
|
|
35
|
+
|------|--------------|
|
|
36
|
+
| `bd` | `border`(変数管理を有効化) |
|
|
37
|
+
| `bd-x` | `border-inline` |
|
|
38
|
+
| `bd-y` | `border-block` |
|
|
39
|
+
| `bd-x-s` | `border-inline-start` |
|
|
40
|
+
| `bd-x-e` | `border-inline-end` |
|
|
41
|
+
| `bd-y-s` | `border-block-start` |
|
|
42
|
+
| `bd-y-e` | `border-block-end` |
|
|
43
|
+
| `bd-t` | `border-top` |
|
|
44
|
+
| `bd-b` | `border-bottom` |
|
|
45
|
+
| `bd-l` | `border-left` |
|
|
46
|
+
| `bd-r` | `border-right` |
|
|
47
|
+
|
|
48
|
+
標準で用意しているのは物理方向(`-t` / `-b` / `-l` / `-r`)と論理方向(`-x` / `-y` / `-x-s` / `-x-e` / `-y-s` / `-y-e`)のみ。
|
|
49
|
+
|
|
50
|
+
## 値プロパティ
|
|
51
|
+
|
|
52
|
+
| Prop | 変数 | プリセット値クラス | BP クラス |
|
|
53
|
+
|------|------|-------------|-----|
|
|
54
|
+
| `bd` | — | `-bd:none` | — |
|
|
55
|
+
| `bds` | `--bds` | `-bds:dashed`, `-bds:dotted`, `-bds:double` | — |
|
|
56
|
+
| `bdc` | `--bdc` | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` | — |
|
|
57
|
+
| `bdw` | `--bdw` | — | `-bdw_sm`, `-bdw_md` |
|
|
58
|
+
|
|
59
|
+
`bdw` はブレイクポイント指定に対応。`--bdw` の値を BP で切り替えることで、ボーダーの方向自体を変化させることもできる。
|
|
60
|
+
|
|
61
|
+
## Usage
|
|
62
|
+
|
|
63
|
+
### 全方向にボーダー + カスタマイズ
|
|
64
|
+
|
|
65
|
+
```jsx
|
|
66
|
+
<Box bd p="10">...</Box>
|
|
67
|
+
<Box bd bds="dashed" bdw="4px" bdc="red" p="15">...</Box>
|
|
68
|
+
```
|
|
69
|
+
```html
|
|
70
|
+
<div class="l--box -bd -p:10">...</div>
|
|
71
|
+
<div class="l--box -bd -bds:dashed -p:15" style="--bdw: 4px; --bdc: var(--red)">...</div>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 単一方向
|
|
75
|
+
|
|
76
|
+
```jsx
|
|
77
|
+
<Box bd-t px="10">-t: Top</Box>
|
|
78
|
+
<Box bd-x bdw="2px" px="10">inline</Box>
|
|
79
|
+
<Box bd-x-s bdw="2px" px="10">inline-start</Box>
|
|
80
|
+
```
|
|
81
|
+
```html
|
|
82
|
+
<div class="l--box -bd-t -px:10">-t: Top</div>
|
|
83
|
+
<div class="l--box -bd-x -px:10" style="--bdw: 2px">inline</div>
|
|
84
|
+
<div class="l--box -bd-x-s -px:10" style="--bdw: 2px">inline-start</div>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 方向ごとに異なるスタイル
|
|
88
|
+
|
|
89
|
+
`-bd` + `--bdw` / `--bds` / `--bdc` を複数値指定すると、方向ごとにスタイルを変えられる。
|
|
90
|
+
|
|
91
|
+
```jsx
|
|
92
|
+
<Box bd bdw="0 0 1px .5em" bds="dashed solid" bdc="var(--purple) var(--blue)" p="15">
|
|
93
|
+
border
|
|
94
|
+
</Box>
|
|
95
|
+
```
|
|
96
|
+
```html
|
|
97
|
+
<div class="l--box -bd -p:15"
|
|
98
|
+
style="--bdw: 0 0 1px 0.5em; --bds: dashed solid; --bdc: var(--purple) var(--blue)">
|
|
99
|
+
border
|
|
100
|
+
</div>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### ブレイクポイントで `bdw` を切り替え
|
|
104
|
+
|
|
105
|
+
```jsx
|
|
106
|
+
<Box bd bdw={['1px', '3px', '6px']} p="15">border</Box>
|
|
107
|
+
```
|
|
108
|
+
```html
|
|
109
|
+
<div class="l--box -bd -bdw_sm -bdw_md -p:15"
|
|
110
|
+
style="--bdw: 1px; --bdw_sm: 3px; --bdw_md: 6px">border</div>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### BP でボーダー方向を切り替える
|
|
114
|
+
|
|
115
|
+
`bd-x-s` + `bd-y-s` に `bdw` の複数値を BP で差し替えると、「縦並び時は上下線・横並び時は左右線」のように方向を切り替えられる。
|
|
116
|
+
|
|
117
|
+
```jsx
|
|
118
|
+
<Flex fxd={['column', 'row']}>
|
|
119
|
+
<Box px="15" py="5">Box</Box>
|
|
120
|
+
<Box px="15" py="5" bd-x-s bd-y-s bdw={['1px 0', '0 1px']}>Box</Box>
|
|
121
|
+
</Flex>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 関連
|
|
125
|
+
|
|
126
|
+
- [`-bdrs`](https://lism-css.com/docs/property-class/) — 角丸(`border-radius`)
|
|
127
|
+
- [`-bd-{side}` + `has--gutter`](../trait-class/has--gutter.md) — セクション区切りに使うと相性が良い
|