@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.
Files changed (38) hide show
  1. package/dist/data/docs-index.json +104 -55
  2. package/dist/data/guides/SKILL.md +27 -13
  3. package/dist/data/guides/base-styles.md +2 -0
  4. package/dist/data/guides/components-core.md +17 -13
  5. package/dist/data/guides/components-ui.md +16 -11
  6. package/dist/data/guides/css-rules.md +29 -20
  7. package/dist/data/guides/customize.md +220 -0
  8. package/dist/data/guides/naming.md +16 -2
  9. package/dist/data/guides/primitive-class.md +3 -26
  10. package/dist/data/guides/primitives/a--decorator.md +1 -1
  11. package/dist/data/guides/primitives/l--box.md +1 -1
  12. package/dist/data/guides/primitives/l--flex.md +1 -1
  13. package/dist/data/guides/primitives/l--flow.md +1 -1
  14. package/dist/data/guides/primitives/l--frame.md +1 -1
  15. package/dist/data/guides/primitives/l--sideMain.md +1 -1
  16. package/dist/data/guides/prop-responsive.md +28 -3
  17. package/dist/data/guides/property-class/bd.md +127 -0
  18. package/dist/data/guides/property-class/hov.md +140 -0
  19. package/dist/data/guides/property-class/max-sz.md +99 -0
  20. package/dist/data/guides/property-class.md +46 -80
  21. package/dist/data/guides/set-class.md +63 -78
  22. package/dist/data/guides/tokens.md +18 -8
  23. package/dist/data/guides/trait-class/has--gutter.md +48 -0
  24. package/dist/data/guides/trait-class/has--mask.md +66 -0
  25. package/dist/data/guides/trait-class/has--snap.md +68 -0
  26. package/dist/data/guides/trait-class/has--transition.md +73 -0
  27. package/dist/data/guides/{primitives → trait-class}/is--boxLink.md +8 -8
  28. package/dist/data/guides/{primitives → trait-class}/is--container.md +2 -2
  29. package/dist/data/guides/{primitives → trait-class}/is--layer.md +2 -2
  30. package/dist/data/guides/{primitives → trait-class}/is--wrapper.md +2 -2
  31. package/dist/data/guides/trait-class.md +77 -0
  32. package/dist/data/guides/utility-class.md +0 -1
  33. package/dist/data/meta.js +2 -2
  34. package/dist/lib/load-markdown.js +1 -1
  35. package/dist/lib/search.js +8 -5
  36. package/dist/tools/get-component.js +4 -3
  37. package/dist/tools/get-guide.js +1 -1
  38. 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/primitives/)
39
+ [詳細](https://lism-css.com/docs/naming/)
40
40
 
41
- クラス名のプレフィックスによって、役割とレイヤーの所属が決まります。
41
+ Lism CSSで定義されるクラスは、その役割とレイヤーの所属が決まっており、その分類によってプレフィックスが定められています。
42
42
 
43
- | プレフィックス | レイヤー | 役割 | 例 |
44
- |--------------|---------|------|-----|
45
- | `.set--` | lism-base | ベーススタイル上書き・トークン再定義 | `.set--plain`, `.set--transition` |
46
- | `.is--` | lism-primitive.trait | Trait Primitive(要素の静的特性) | `.is--container`, `.is--wrapper` |
47
- | `.l--` | lism-primitive.layout | Layout Primitive | `.l--grid`, `.l--flex`, `.l--stack` |
48
- | `.a--` | lism-primitive.atomic | Atomic Primitive | `.a--icon`, `.a--divider` |
49
- | `.c--` | lism-component | Component Class(BEM 構造を持つ UI 部品) | `.c--button`, `.c--accordion` |
50
- | `.u--` | lism-utility | 用途が明確なユーティリティ | `.u--cbox`, `.u--trim` |
51
- | `.-` | レイヤー外 | 単一プロパティ制御(Property Class) | `.-fz:l`, `.-p:20`, `.-d:none` |
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--] [set--] [u--] [-]
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 | Trait Primitives(`is--`) | `is--wrapper`, `is--layer` |
78
- | 6 | Set Class(`set--`) | `set--hov`, `set--transition` |
79
- | 7 | Utility Class(`u--`) | `u--cbox`, `u--trim` |
80
- | 8 | Property Class(`-`) | `-p:20`, `-bgc:base-2` |
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}` | プリミティブの主要機能変数 | `--sideW`, `--mainW` |
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 Primitives: `is--`
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 クラス**(`is--` / `l--` / `a--`)を提供します。これらはすべて `@layer lism-primitive` に属します(サブレイヤーは `trait` / `layout` / `atomic`)。
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--`)
@@ -40,4 +40,4 @@
40
40
 
41
41
  - [a--spacer](./a--spacer.md) — 要素間スペース
42
42
  - [a--divider](./a--divider.md) — 区切り線
43
- - [is--layer](./is--layer.md) — `position: absolute` のオーバーレイ
43
+ - [is--layer](../trait-class/is--layer.md) — `position: absolute` のオーバーレイ
@@ -28,4 +28,4 @@
28
28
 
29
29
  - [l--flow](./l--flow.md) — テキスト主体のフローレイアウト
30
30
  - [l--stack](./l--stack.md) — Flex 縦並び
31
- - [is--wrapper](./is--wrapper.md) — コンテンツ幅ラッパー
31
+ - [is--wrapper](../trait-class/is--wrapper.md) — コンテンツ幅ラッパー
@@ -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), `fxs`(flex-shrink)などで個別制御できます。
54
+ 子要素側も `fx`(flex shorthand), `fxb`(flex-basis), `fxg`(flex-grow), `fxsh`(flex-shrink)などで個別制御できます。
55
55
 
56
56
  ```jsx
57
57
  <Flex g="20">
@@ -131,4 +131,4 @@
131
131
  ## 関連プリミティブ
132
132
 
133
133
  - [l--stack](./l--stack.md) — `gap` で余白を管理する縦積み(こちらは Flexbox)
134
- - [is--wrapper](./is--wrapper.md) — 記事コンテンツ幅の制限用ラッパー(`l--flow` とセットで使うことが多い)
134
+ - [is--wrapper](../trait-class/is--wrapper.md) — 記事コンテンツ幅の制限用ラッパー(`l--flow` とセットで使うことが多い)
@@ -89,6 +89,6 @@
89
89
 
90
90
  ## 関連プリミティブ
91
91
 
92
- - [is--layer](./is--layer.md) — `l--frame` 内のオーバーレイ配置に使用
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](./is--container.md) — レスポンシブ Property Class 利用時に必要
102
+ - [is--container](../trait-class/is--container.md) — レスポンシブ Property Class 利用時に必要
@@ -29,9 +29,34 @@ Lism CSS はコンテナクエリをデフォルトで採用しています。
29
29
  ```
30
30
 
31
31
  **仕組み:**
32
- 1. `-p_sm` クラスは `@container (min-width: 480px)` 内で `padding: var(--p_sm)` を適用
33
- 2. `--p_sm` 変数で切り替え先の値を指定
34
- 3. `overwriteBaseVar` 対応の Prop はベース変数(`--p`)も上書きされる
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) — セクション区切りに使うと相性が良い