@lism-css/mcp 0.14.0 → 0.15.1

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 (51) hide show
  1. package/dist/data/docs-index.json +152 -82
  2. package/dist/data/guides/SKILL.md +43 -19
  3. package/dist/data/guides/antipatterns.md +147 -0
  4. package/dist/data/guides/base-styles.md +3 -1
  5. package/dist/data/guides/components-core.md +21 -17
  6. package/dist/data/guides/components-ui.md +18 -13
  7. package/dist/data/guides/css-rules.md +43 -34
  8. package/dist/data/guides/customize.md +220 -0
  9. package/dist/data/guides/naming.md +26 -7
  10. package/dist/data/guides/primitive-class.md +82 -30
  11. package/dist/data/guides/primitives/a--decorator.md +2 -2
  12. package/dist/data/guides/primitives/a--divider.md +1 -1
  13. package/dist/data/guides/primitives/a--icon.md +1 -1
  14. package/dist/data/guides/primitives/a--spacer.md +1 -1
  15. package/dist/data/guides/primitives/l--autoColumns.md +71 -0
  16. package/dist/data/guides/primitives/l--box.md +2 -2
  17. package/dist/data/guides/primitives/l--center.md +1 -1
  18. package/dist/data/guides/primitives/l--cluster.md +2 -2
  19. package/dist/data/guides/primitives/l--columns.md +3 -3
  20. package/dist/data/guides/primitives/l--flex.md +2 -2
  21. package/dist/data/guides/primitives/l--flow.md +5 -5
  22. package/dist/data/guides/primitives/l--frame.md +2 -2
  23. package/dist/data/guides/primitives/l--grid.md +2 -2
  24. package/dist/data/guides/primitives/l--stack.md +1 -1
  25. package/dist/data/guides/primitives/{l--switchCols.md → l--switchColumns.md} +18 -18
  26. package/dist/data/guides/primitives/l--tileGrid.md +2 -2
  27. package/dist/data/guides/primitives/{l--sideMain.md → l--withSide.md} +42 -20
  28. package/dist/data/guides/prop-responsive.md +29 -4
  29. package/dist/data/guides/property-class/bd.md +127 -0
  30. package/dist/data/guides/property-class/hov.md +140 -0
  31. package/dist/data/guides/property-class/max-sz.md +99 -0
  32. package/dist/data/guides/property-class.md +49 -83
  33. package/dist/data/guides/set-class.md +65 -80
  34. package/dist/data/guides/tokens.md +26 -13
  35. package/dist/data/guides/trait-class/has--gutter.md +48 -0
  36. package/dist/data/guides/trait-class/has--mask.md +66 -0
  37. package/dist/data/guides/trait-class/has--snap.md +68 -0
  38. package/dist/data/guides/trait-class/has--transition.md +73 -0
  39. package/dist/data/guides/{primitives → trait-class}/is--boxLink.md +8 -8
  40. package/dist/data/guides/{primitives → trait-class}/is--container.md +11 -5
  41. package/dist/data/guides/{primitives → trait-class}/is--layer.md +5 -5
  42. package/dist/data/guides/{primitives → trait-class}/is--wrapper.md +8 -8
  43. package/dist/data/guides/trait-class.md +77 -0
  44. package/dist/data/guides/utility-class.md +9 -9
  45. package/dist/data/meta.js +2 -2
  46. package/dist/lib/load-markdown.js +1 -1
  47. package/dist/lib/search.js +8 -5
  48. package/dist/tools/get-component.js +4 -3
  49. package/dist/tools/get-guide.js +9 -2
  50. package/package.json +2 -2
  51. package/dist/data/guides/primitives/l--fluidCols.md +0 -71
@@ -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.md)
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
+ ```
@@ -7,7 +7,7 @@
7
7
  - [`{prop}` の省略ルール](#prop-の省略ルール)
8
8
  - [`{value}` の省略ルール](#value-の省略ルール)
9
9
 
10
- [詳細](https://lism-css.com/docs/naming/)
10
+ [詳細](https://lism-css.com/docs/naming.md)
11
11
 
12
12
  ---
13
13
 
@@ -30,9 +30,11 @@
30
30
  | `s`, `m`, `l`, `xl`... | ベース値を中心に大小の段階を示す | `--fz--s`, `--fz--l` |
31
31
  | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--lh--base` |
32
32
  | `10`, `20`, `30`... | `0`(`none`)基準で段階的に増加 | `--bdrs--20`, `--bxsh--30` |
33
- | `-10`, `-20`, `-30`... | `0`(`none`)基準で段階的に減少 | `--o---10`, `--o---20` |
34
33
  | セマンティック名 | 上記に当てはまらない場合 | `--ar--og` |
35
34
 
35
+ > 🎵 **例外: opacity トークン**
36
+ > opacity(`--o--mp` / `--o--p` / `--o--pp` / `--o--ppp`)は、音楽の強弱記号(piano 系列)に由来するセマンティック命名を採用している。`p`(piano / 弱く)の反復回数が多いほど透明度が増す構造で、「文字の反復回数で段階を表す」命名は Lism 内で opacity のみの例外。
37
+
36
38
  ### Property Class 用の変数
37
39
 
38
40
  | 形式 | 説明 | 例 |
@@ -45,7 +47,7 @@
45
47
  | 形式 | 用途 | 例 |
46
48
  |------|------|-----|
47
49
  | `--{target}-{prop}` | 要素・クラスに対するプロパティ(`:root`で上書き可) | `--link-td`, `--headings-ff` |
48
- | `--{propName}` | プリミティブの主要機能変数 | `--sideW`, `--mainW` |
50
+ | `--{propName}` | クラス自身の主要機能を制御する変数。要素側で値が初期化され、`:root` からは初期値の定義ができないもの | `--sideW`, `--mainW` |
49
51
  | `--_{item}-{propName}` | `c--` の子要素プロパティ | `--_icon-size` |
50
52
  | `--_{varName}` | 状態管理用の内部変数 | `--_isHov`, `--_notHov` |
51
53
 
@@ -57,17 +59,31 @@
57
59
  - Component: `c--`
58
60
  - Atomic Primitives: `a--`
59
61
  - Layout Primitives: `l--`
60
- - Trait Primitives: `is--`
62
+ - Trait(役割宣言): `is--`
63
+ - Trait(機能付与): `has--`
61
64
  - Set Class: `set--`
62
65
  - Utility Class: `u--`
63
66
 
64
67
  プレフィックスに続く名称は camelCase(例: `c--myComponent`)。
65
68
 
69
+ **使い分けの判断軸:**
70
+
71
+ | プレフィックス | 責務 | 代表例 |
72
+ |---|---|---|
73
+ | `set--` | HTML 要素の基礎スタイリング / 変数セット | `set--plain`, `set--revert`, `set--var:hov`, `set--var:bxsh` |
74
+ | `is--` | 〜である(役割・存在の宣言)。CSS 変数は必須ではない | `is--container`, `is--wrapper`, `is--layer` |
75
+ | `has--` | 〜を持つ(単一機能 trait の付与)。CSS 変数でカスタマイズ可 | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
76
+ | `u--` | 装飾的効果(単独 or 子要素の装飾) | `u--trim`, `u--cbox`, `u--divide`, `u--cells` |
77
+
78
+ - `set--` は `lism-base` 層で HTML 要素の基礎スタイル・変数を提供するもの。
79
+ - `is--` / `has--` は `lism-trait` 層に属する。
80
+
66
81
  Property Class の形式:
67
82
 
68
83
  - 特定の値とセット: `-{prop}:{value}`
69
84
  - `--{prop}` 変数を受け取る: `-{prop}`
70
85
  - ブレークポイント値を受け取る: `-{prop}_{bp}`
86
+ - 修飾子 + Property Class 合成: `-{modifier}:-{prop}`(例: `-hov:-c` は `-c` の hover バリアント)
71
87
 
72
88
 
73
89
  ## `{prop}` の省略ルール
@@ -180,15 +196,18 @@ NG例: `flex` → `fx` としたうえで `flex-shrink` を `fsh` にする(`f
180
196
  ```
181
197
  .-c:text-2 → color: var(--text-2);
182
198
  .-fz:l → font-size: var(--fz--l);
183
- .-p10 → padding: var(--s10);
199
+ .-p:10 → padding: var(--s10);
184
200
  .-fw:bold → font-weight: var(--fw--bold);
185
201
  .-bdrs:20 → border-radius: var(--bdrs--20);
186
202
  ```
187
203
 
188
- トークン値が `-{NUM}` のものも、値をそのまま連結した変数名になる。
204
+ opacity トークンは音楽記号に由来する例外的な命名で、そのままクラス化される。
189
205
 
190
206
  ```
191
- .-o:-10 → opacity: var(--o---10);
207
+ .-o:mp → opacity: var(--o--mp);
208
+ .-o:p → opacity: var(--o--p);
209
+ .-o:pp → opacity: var(--o--pp);
210
+ .-o:ppp → opacity: var(--o--ppp);
192
211
  ```
193
212
 
194
213
  ### 長いキーワード値の省略
@@ -1,16 +1,17 @@
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
+ - [カラムレイアウト Primitive の使い分けガイド](#カラムレイアウト-primitive-の使い分けガイド)
11
12
  - [Atomic Primitive(`a--`)](#atomic-primitivea--)
12
13
 
13
- [詳細](https://lism-css.com/docs/primitives/)
14
+ [詳細](https://lism-css.com/docs/primitives.md)
14
15
 
15
16
  ---
16
17
 
@@ -18,33 +19,10 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
18
19
 
19
20
  | プレフィックス | 種類 | サブレイヤー | 役割 |
20
21
  |--------------|------|------------|------|
21
- | `is--` | Trait Primitive | `lism-primitive.trait` | 要素に静的な構造的特性を付与する汎用クラス |
22
22
  | `l--` | Layout Primitive | `lism-primitive.layout` | レイアウトの構成単位となる Primitive |
23
23
  | `a--` | Atomic Primitive | `lism-primitive.atomic` | レイアウトの最小単位(アイコン・区切り線等) |
24
24
 
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>`)
25
+ 併用ルールは [css-rules.md](./css-rules.md#プレフィックスとクラス分類) を参照してください。
48
26
 
49
27
 
50
28
  ## Layout Primitive(`l--`)
@@ -63,13 +41,87 @@ Lism コンポーネントでは `isContainer`, `isLayer` 等の Props として
63
41
  | `l--frame` | アスペクト比や高さが固定されたメディア要素を配置する。直下のメディア要素に `object-fit: cover` を付与する。 |
64
42
  | `l--columns` | `repeat`と`minmax(0, 1fr))`を使ったカラムレイアウト。レスポンシブ対応の`--cols`用のProperty Classでカラム数の切り替え可能。 |
65
43
  | `l--tileGrid` | `--cols`だけではなく`--rows`も組み合わせた均等タイルグリッド(`grid-template: repeat(var(--rows,1), minmax(0, 1fr)) / repeat(var(--cols,1), minmax(0, 1fr))`) |
66
- | `l--fluidCols` | ブレイクポイントに依存せず、自動段組のできる流動カラムレイアウト。`--cols: 16em`のようにして最小維持幅を指定できる。 |
67
- | `l--sideMain` | 画像とコンテンツ、メインエリアとサイドバーなどの「"Side" + "Main"」に分かれ、横並びと縦並びが切り替わるレイアウト。"Main"が`--mainW`で指定したサイズ以上の横幅を維持できる範囲内で横並びを維持し、下回る場合は縦並びへ自動で切り替わる。横並びの間の"Side"の横幅は`--sideW`で指定する。 |
68
- | `l--switchCols` | 任意のサイズで一括カラム切り替えができるカラムレイアウト。`--breakSize` で制御 |
44
+ | `l--autoColumns` | ブレイクポイントに依存せず、自動段組のできる流動カラムレイアウト。`--cols: 16em`のようにして最小維持幅を指定できる。 |
45
+ | `l--withSide` | 画像とコンテンツ、メインエリアとサイドバーなどの「"Side" + "Main"」に分かれ、横並びと縦並びが切り替わるレイアウト。"Main"が`--mainW`で指定したサイズ以上の横幅を維持できる範囲内で横並びを維持し、下回る場合は縦並びへ自動で切り替わる。横並びの間の"Side"の横幅は`--sideW`で指定する。 |
46
+ | `l--switchColumns` | 任意のサイズで一括カラム切り替えができるカラムレイアウト。`--breakSize` で制御 |
69
47
 
70
48
  それぞれ対応するLismコンポーネント(`<Flex>`, `<Stack>`, `<Cluster>` 等)があります。
71
49
 
72
50
 
51
+ ### カラムレイアウト Primitive の使い分けガイド
52
+
53
+ 「カラムを並べる」用途で使える Primitive は複数あります。意図に応じて使い分けます。
54
+
55
+ #### 比較表
56
+
57
+ 各 Primitive がどの用途に向いているか:
58
+
59
+ | やりたいこと | `l--columns` | `l--autoColumns` | `l--switchColumns` | `l--withSide` | `l--grid` |
60
+ |---|---|---|---|---|---|
61
+ | 等幅 N 列 | ◯ | ◯ | ✗ | ✗ | △ |
62
+ | 横並び ↔ 1 列の一括切替 | ◯ | ✗ | ◯ | ✗ | △ |
63
+ | カラム最小幅で自動折返し | ✗ | ◯ | ✗ | ✗ | △ |
64
+ | サイド + メイン(非対称 2 カラム) | △ | ✗ | ✗ | ◯ | △ |
65
+ | BP で列数切替 | ◯ | ✗ | ✗ | ✗ | △ |
66
+ | 非BPでのレスポンシブ | ✗ | ◯ | ◯ | ◯ | ✗ |
67
+
68
+ 凡例: ◯ 適している / △ 可能だが冗長 / ✗ 不向き
69
+
70
+ #### 選び方
71
+
72
+ ##### 1. 等幅 N 列、または列数を BP で切り替えたい
73
+
74
+ - **推奨**: `l--columns` (`<Columns cols={[1, 2, 3]} />`)
75
+ - **理由**: `cols={3}` で固定列数、`cols` 配列で BP ごとの列数を宣言的に書ける
76
+ - **代替**:
77
+ - `l--grid`: `gtc="repeat(3, 1fr)"` で書けるが、等幅 N 列や列数切替だけなら Columns のほうが簡潔
78
+ - `l--tileGrid`: 行も指定したい時はこちら
79
+ - **要件**: BP 値を使うため祖先に `is--container` が必要
80
+
81
+ ##### 2. カラム幅が指定値を下回ったら自動で折り返したい
82
+
83
+ - **推奨**: `l--autoColumns` (`<AutoColumns cols="20rem" />`)
84
+ - **理由**: BP に依存せず、カラム最小幅基準で `auto-fit` / `auto-fill` の挙動を簡潔に書ける
85
+ - **典型例**: カード一覧、商品リスト、ロゴ並び等
86
+ - **代替**:
87
+ - `l--grid`: `gtc="repeat(auto-fit, minmax(20rem, 1fr))"` を直書きできるが冗長
88
+
89
+ ##### 3. 「横並び」と「縦 1 列」を一括で切り替えたい(多段階の列数変化が不要)
90
+
91
+ - **推奨**: `l--switchColumns` (`<SwitchColumns breakSize="s" />`)
92
+ - **理由**: 自身の利用可能幅が `breakSize` を下回ったら一気に縦並びに切り替わる。BP / CQ 設計は不要だが、`breakSize` で切り替え幅を指定する
93
+ - **代替**:
94
+ - `l--columns cols={[1, 2]}`: BP で切り替える場合
95
+ - `l--autoColumns`: 段階的に列数が変わってよい場合
96
+
97
+ ##### 4. サイド + メイン(非対称 2 カラム)で、コンテンツ幅で自動切替したい
98
+
99
+ - **推奨**: `l--withSide` (`<WithSide sideW="..." mainW="..." />`)
100
+ - **理由**: メイン側が `mainW` を維持できなくなったら自動で縦並びに。BP 設計不要
101
+ - **典型例**: 画像 + テキスト、メインエリア + サイドバー、メディアとテキストが交互に並ぶ繰り返しブロック(メディア側を `isSide` として先に置き、`fxd="row-reverse"` で交互配置すると、縦並び時はメディア側を上に統一できる)
102
+ - **代替**:
103
+ - `l--grid` + `gta` 配列: BP で明示的に切替したい場合は Grid + `gta` のテンプレ切替で同じ見た目を実現可能(withSide のほうが宣言的でシンプル)
104
+
105
+ ##### 5. 行 × 列を指定した固定タイルレイアウト
106
+
107
+ - **推奨**: `l--tileGrid` (`<TileGrid cols="3" rows="2" />`)
108
+ - **理由**: カラムレイアウトというより、行数も固定したい場合の Grid 派生。`cols` / `rows` で `repeat(rows, minmax(0, 1fr)) / repeat(cols, minmax(0, 1fr))` を簡潔に書ける
109
+ - **代替**:
110
+ - `l--columns`: 列だけでよい(行は内容で自動決定)場合
111
+ - `l--grid`: トラックを個別に細かく制御したい場合
112
+
113
+ ##### 6. Grid テンプレートを主目的にした複雑な配置
114
+
115
+ - **推奨**: `l--grid` (`<Grid gtc="..." gta="..." />`)
116
+ - **理由**: `gta` / `gtc` 自体は Property Class として他の Primitive にも指定できるが、Grid テンプレートを主軸にするなら `l--grid` が素直
117
+ - **典型例**: 名前付きエリア配置、要素の重ね合わせ(`ga="1/1"`)、subgrid
118
+
119
+ #### 補足
120
+
121
+ - 各 Primitive の詳細・使用例は [primitives/](./primitives/) 配下の個別ファイルを参照
122
+ - レスポンシブな値(配列指定)を使う場合は祖先要素に `is--container` が必須([prop-responsive.md](./prop-responsive.md))
123
+
124
+
73
125
  ## Atomic Primitive(`a--`)
74
126
 
75
127
  レイアウト構成物の最小単位となる Primitive です。
@@ -6,7 +6,7 @@
6
6
 
7
7
  - クラス名: `a--decorator`
8
8
  - コンポーネント: `<Decorator>`
9
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/a--decorator/
9
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/a--decorator.md
10
10
 
11
11
  ## 専用Props
12
12
 
@@ -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` のオーバーレイ
@@ -7,7 +7,7 @@
7
7
  - クラス名: `a--divider`
8
8
  - コンポーネント: `<Divider>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/atomic/_divider.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/a--divider/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/a--divider.md
11
11
 
12
12
  ## Usage
13
13
 
@@ -7,7 +7,7 @@
7
7
  - クラス名: `a--icon`
8
8
  - コンポーネント: `<Icon>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/atomic/_icon.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/a--icon/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/a--icon.md
11
11
 
12
12
  ## 出力されるHTML構造
13
13
 
@@ -7,7 +7,7 @@
7
7
  - クラス名: `a--spacer`
8
8
  - コンポーネント: `<Spacer>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/atomic/_spacer.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/a--spacer/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/a--spacer.md
11
11
 
12
12
  ## 専用Props
13
13
 
@@ -0,0 +1,71 @@
1
+ # l--autoColumns / `<AutoColumns>`
2
+
3
+ カラム要素が指定した幅より小さくならないように自動で折り返す、**ブレイクポイント非依存の段組みクラス**。`auto-fit` / `auto-fill` を使った流動カラムを簡潔に記述できます。
4
+
5
+ ## 基本情報
6
+
7
+ - クラス名: `l--autoColumns`
8
+ - コンポーネント: `<AutoColumns>`
9
+ - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_autoColumns.scss
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--autoColumns.md
11
+
12
+ ## 専用Props
13
+
14
+ | Prop | CSS変数 | デフォルト | 説明 |
15
+ |------|--------|-----------|------|
16
+ | `cols` | `--cols` | `20rem` | カラムが維持する最小幅を指定(`16em`, `320px` など) |
17
+ | `autoFill` | `--autoMode` | `auto-fit` | `auto-fill` モードに切り替え |
18
+
19
+ ## Usage
20
+
21
+ ### `--cols`でサイズを指定する
22
+
23
+ ```jsx
24
+ <AutoColumns cols="16em" g="20">
25
+ <Lism as="div" p="20" bd>Item A</Lism>
26
+ <Lism as="div" p="20" bd>Item B</Lism>
27
+ <Lism as="div" p="20" bd>Item C</Lism>
28
+ <Lism as="div" p="20" bd>Item D</Lism>
29
+ </AutoColumns>
30
+ ```
31
+
32
+ ```html
33
+ <div class="l--autoColumns -g:20" style="--cols: 16em">
34
+ <div class="-p:20 -bd">Item A</div>
35
+ <div class="-p:20 -bd">Item B</div>
36
+ <div class="-p:20 -bd">Item C</div>
37
+ <div class="-p:20 -bd">Item D</div>
38
+ </div>
39
+ ```
40
+
41
+ ### `auto-fill`を使用する
42
+
43
+ `l--autoColumns` では、`grid-template-columns` の `repeat()` 関数の第一引数を `--autoMode` で指定できます(デフォルトは `auto-fit`)。`--autoMode:auto-fill`(`autoFill`)を指定することで、要素数が少ない時の挙動が変わります。
44
+
45
+ ```jsx
46
+ <AutoColumns cols="12em" autoFill g="20" fz="s">
47
+ <Lism as="div" p="20" bd>auto-fill</Lism>
48
+ <Lism as="div" p="20" bd>auto-fill</Lism>
49
+ </AutoColumns>
50
+ <AutoColumns cols="12em" g="20" fz="s">
51
+ <Lism as="div" p="20" bd>auto-fit</Lism>
52
+ <Lism as="div" p="20" bd>auto-fit</Lism>
53
+ </AutoColumns>
54
+ ```
55
+
56
+ ```html
57
+ <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em; --autoMode:auto-fill">
58
+ <div class="-p:20 -bd">auto-fill</div>
59
+ <div class="-p:20 -bd">auto-fill</div>
60
+ </div>
61
+ <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em">
62
+ <div class="-p:20 -bd">auto-fit</div>
63
+ <div class="-p:20 -bd">auto-fit</div>
64
+ </div>
65
+ ```
66
+
67
+ ## 関連プリミティブ
68
+
69
+ - [l--columns](./l--columns.md) — ブレイクポイント指定の等幅カラム
70
+ - [l--switchColumns](./l--switchColumns.md) — 複数列 ↔ 1列の2段階切り替え
71
+ - [l--withSide](./l--withSide.md) — メイン幅ベースの2カラム自動切替
@@ -6,7 +6,7 @@
6
6
 
7
7
  - クラス名: `l--box`
8
8
  - コンポーネント: `<Box>`
9
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--box/
9
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--box.md
10
10
 
11
11
  ## Usage
12
12
 
@@ -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) — コンテンツ幅ラッパー
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--center`
8
8
  - コンポーネント: `<Center>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_center.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--center/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--center.md
11
11
 
12
12
  ## 動作の仕組み
13
13
 
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--cluster`
8
8
  - コンポーネント: `<Cluster>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_cluster.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--cluster/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--cluster.md
11
11
 
12
12
  ## Usage
13
13
 
@@ -35,4 +35,4 @@
35
35
 
36
36
  - [l--flex](./l--flex.md) — 汎用 Flex 横並び(折り返しなしが基本)
37
37
  - [l--stack](./l--stack.md) — Flex 縦並び
38
- - [l--switchCols](./l--switchCols.md) — ブレイクポイントで縦横切り替えるカラム
38
+ - [l--switchColumns](./l--switchColumns.md) — ブレイクポイントで縦横切り替えるカラム
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--columns`
8
8
  - コンポーネント: `<Columns>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_columns.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--columns/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--columns.md
11
11
 
12
12
  ## 専用Props
13
13
 
@@ -68,5 +68,5 @@
68
68
  ## 関連プリミティブ
69
69
 
70
70
  - [l--tileGrid](./l--tileGrid.md) — 列数×行数を指定する均等タイル
71
- - [l--fluidCols](./l--fluidCols.md) — カラム幅ベースの自動段組
72
- - [l--switchCols](./l--switchCols.md) — 複数列 ↔ 1列切り替え
71
+ - [l--autoColumns](./l--autoColumns.md) — カラム幅ベースの自動段組
72
+ - [l--switchColumns](./l--switchColumns.md) — 複数列 ↔ 1列切り替え
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--flex`
8
8
  - コンポーネント: `<Flex>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_flex.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--flex/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--flex.md
11
11
 
12
12
  ## Usage
13
13
 
@@ -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">