@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
@@ -7,15 +7,15 @@
7
7
  - クラス名: `l--flow`
8
8
  - コンポーネント: `<Flow>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_flow.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--flow/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--flow.md
11
11
 
12
12
  ## 余白の仕組み
13
13
 
14
- `l--flow` 直下の子要素は、`--flow` 変数と `margin-block-start` で間隔が管理されます。見出しタグ(`h2`〜`h6`)のみ余白が大きくなる(`--flow-hScale` で調整可能)。
14
+ `l--flow` 直下の子要素は、`--flow` 変数と `margin-block-start` で間隔が管理されます。見出しタグ(`h1`〜`h6`)のみ余白が大きくなり、`calc(var(--flow) * 2 + 0.5em)` で計算されます。
15
15
 
16
16
  | クラス | 余白量 |
17
17
  |--------|-------|
18
- | `.l--flow` | `--flow--base`(`--s30`) |
18
+ | `l--flow` | `--flow--base`(`--s30`) |
19
19
  | `.l--flow.-flow:s` | `--flow--s`(`--s20`) |
20
20
  | `.l--flow.-flow:` | `--flow` を直接指定した値 |
21
21
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  | Prop | 説明 |
25
25
  |------|------|
26
- | `flow` | `--flow` の値を指定。`s` / `l` などのトークン値を渡すと `.-flow:{value}` クラスが付与、任意値を渡すと `.-flow:` + `style="--flow:..."` が出力される |
26
+ | `flow` | `--flow` の値を指定。`s` / `l` などのトークン値を渡すと `-flow:{value}` クラスが付与、任意値を渡すと `-flow:` + `style="--flow:..."` が出力される |
27
27
 
28
28
  ## Usage
29
29
 
@@ -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` とセットで使うことが多い)
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--frame`
8
8
  - コンポーネント: `<Frame>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_frame.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--frame/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--frame.md
11
11
 
12
12
  ## 専用Props
13
13
 
@@ -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` 指定)
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--grid`
8
8
  - コンポーネント: `<Grid>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_grid.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--grid/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--grid.md
11
11
 
12
12
  ## Usage
13
13
 
@@ -65,4 +65,4 @@
65
65
 
66
66
  - [l--tileGrid](./l--tileGrid.md) — 自動繰り返しのタイル型 Grid
67
67
  - [l--columns](./l--columns.md) — 等幅カラム専用
68
- - [l--sideMain](./l--sideMain.md) — コンテンツ幅自動切り替え型 2 カラム
68
+ - [l--withSide](./l--withSide.md) — コンテンツ幅自動切り替え型 2 カラム
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--stack`
8
8
  - コンポーネント: `<Stack>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_stack.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--stack/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--stack.md
11
11
 
12
12
  ## Usage
13
13
 
@@ -1,34 +1,34 @@
1
- # l--switchCols / `<SwitchCols>`
1
+ # l--switchColumns / `<SwitchColumns>`
2
2
 
3
3
  複数列 ↔ 1列の切り替えをコンテナクエリやメディアクエリを使わずに実装するクラス。Flexbox ベースで、親コンテナ幅に応じて自動的に折り返します。
4
4
 
5
5
  ## 基本情報
6
6
 
7
- - クラス名: `l--switchCols`
8
- - コンポーネント: `<SwitchCols>`
9
- - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_switchCols.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--switchCols/
7
+ - クラス名: `l--switchColumns`
8
+ - コンポーネント: `<SwitchColumns>`
9
+ - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_switchColumns.scss
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--switchColumns.md
11
11
 
12
12
  ## 専用Props
13
13
 
14
- | Prop | CSS変数 | 説明 |
15
- |------|--------|------|
16
- | `breakSize` | `--breakSize` | 横並びを維持するのに必要な親コンテナ幅を指定。`sz` トークンが使える |
14
+ | Prop | CSS変数 | デフォルト | 説明 |
15
+ |------|--------|-----------|------|
16
+ | `breakSize` | `--breakSize` | `var(--sz--xs)` | 横並びを維持するのに必要な親コンテナ幅を指定。`sz` トークンが使える |
17
17
 
18
18
  ## Usage
19
19
 
20
20
  ### デフォルト幅で利用する
21
21
 
22
22
  ```jsx
23
- <SwitchCols g="20">
23
+ <SwitchColumns g="20">
24
24
  <div class="-bgc:base-2 -p:20">Box</div>
25
25
  <div class="-bgc:base-2 -p:20">Box</div>
26
26
  <div class="-bgc:base-2 -p:20">Box</div>
27
- </SwitchCols>
27
+ </SwitchColumns>
28
28
  ```
29
29
 
30
30
  ```html
31
- <div class="l--switchCols -g:20">
31
+ <div class="l--switchColumns -g:20">
32
32
  <div class="-bgc:base-2 -p:20">Box</div>
33
33
  <div class="-bgc:base-2 -p:20">Box</div>
34
34
  <div class="-bgc:base-2 -p:20">Box</div>
@@ -38,14 +38,14 @@
38
38
  ### `breakSize` の指定
39
39
 
40
40
  ```jsx
41
- <SwitchCols breakSize="s" g="20">
41
+ <SwitchColumns breakSize="s" g="20">
42
42
  <div class="-bgc:base-2 -p:20">Box</div>
43
43
  <div class="-bgc:base-2 -p:20">Box</div>
44
- </SwitchCols>
44
+ </SwitchColumns>
45
45
  ```
46
46
 
47
47
  ```html
48
- <div class="l--switchCols -g:20" style="--breakSize: var(--sz--s)">
48
+ <div class="l--switchColumns -g:20" style="--breakSize: var(--sz--s)">
49
49
  <div class="-bgc:base-2 -p:20">Box</div>
50
50
  <div class="-bgc:base-2 -p:20">Box</div>
51
51
  </div>
@@ -56,14 +56,14 @@
56
56
  子要素に `flex-grow` を指定すると、横並び時の幅の比率を個別に調整できます。
57
57
 
58
58
  ```jsx
59
- <SwitchCols breakSize="s" g="20">
59
+ <SwitchColumns breakSize="s" g="20">
60
60
  <div class="-bgc:base-2 -p:20">Box</div>
61
61
  <div class="-bgc:base-2 -p:20" style={{ flexGrow: 2 }}>Box</div>
62
- </SwitchCols>
62
+ </SwitchColumns>
63
63
  ```
64
64
 
65
65
  ## 関連プリミティブ
66
66
 
67
- - [l--fluidCols](./l--fluidCols.md) — 最小幅ベースの自動段組
67
+ - [l--autoColumns](./l--autoColumns.md) — 最小幅ベースの自動段組
68
68
  - [l--columns](./l--columns.md) — ブレイクポイント指定の等幅カラム
69
- - [l--sideMain](./l--sideMain.md) — コンテンツ幅基準の2カラム切り替え
69
+ - [l--withSide](./l--withSide.md) — コンテンツ幅基準の2カラム切り替え
@@ -7,7 +7,7 @@
7
7
  - クラス名: `l--tileGrid`
8
8
  - コンポーネント: `<TileGrid>`
9
9
  - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_tileGrid.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--tileGrid/
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--tileGrid.md
11
11
 
12
12
  ## 専用Props
13
13
 
@@ -57,5 +57,5 @@
57
57
  ## 関連プリミティブ
58
58
 
59
59
  - [l--columns](./l--columns.md) — 等幅列のみ(1D)のカラム
60
- - [l--fluidCols](./l--fluidCols.md) — 自動折り返し型段組
60
+ - [l--autoColumns](./l--autoColumns.md) — 自動折り返し型段組
61
61
  - [l--grid](./l--grid.md) — 汎用 CSS Grid
@@ -1,13 +1,13 @@
1
- # l--sideMain / `<SideMain>`
1
+ # l--withSide / `<WithSide>`
2
2
 
3
3
  メディアクエリ・コンテナクエリに依存せず、**維持したいコンテンツ幅を基準にして横並び・縦並びが自動で切り替わる2カラムレイアウト**。「画像 + コンテンツ」「メインエリア + サイドバー」などに活用できる。
4
4
 
5
5
  ## 基本情報
6
6
 
7
- - クラス名: `l--sideMain`
8
- - コンポーネント: `<SideMain>`
9
- - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_sideMain.scss
10
- - ドキュメント(人間向け): https://lism-css.com/docs/primitives/l--sideMain/
7
+ - クラス名: `l--withSide`
8
+ - コンポーネント: `<WithSide>`
9
+ - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/layout/_withSide.scss
10
+ - 公式ドキュメント: https://lism-css.com/docs/primitives/l--withSide.md
11
11
 
12
12
  ## 動作の仕組み
13
13
 
@@ -17,15 +17,15 @@
17
17
 
18
18
  ## 専用Props
19
19
 
20
- | Prop | 出力 | 説明 |
21
- |------|------|------|
22
- | `sideW` | `--sideW` | サイド要素の横幅 |
23
- | `mainW` | `--mainW` | メイン要素で維持したい最小幅 |
20
+ | Prop | 出力 | デフォルト | 説明 |
21
+ |------|------|-----------|------|
22
+ | `sideW` | `--sideW` | `auto` | サイド要素の横幅 |
23
+ | `mainW` | `--mainW` | `max(20rem, 50%)` | メイン要素で維持したい最小幅 |
24
24
 
25
25
  ## HTML構造
26
26
 
27
27
  ```html
28
- <div class="l--sideMain">
28
+ <div class="l--withSide">
29
29
  <div>Main Content</div>
30
30
  <div class="is--side">Side Content</div>
31
31
  </div>
@@ -36,7 +36,7 @@
36
36
  ### 基本的な使い方
37
37
 
38
38
  ```jsx
39
- <SideMain sideW="12rem" mainW="20rem" g="20">
39
+ <WithSide sideW="12rem" mainW="20rem" g="20">
40
40
  <Box p="15" bd bdc="blue">
41
41
  <p>Main Content</p>
42
42
  <p>メインコンテンツ本文...</p>
@@ -44,11 +44,11 @@
44
44
  <Box isSide p="15" bd bdc="red">
45
45
  <p>Side Content</p>
46
46
  </Box>
47
- </SideMain>
47
+ </WithSide>
48
48
  ```
49
49
 
50
50
  ```html
51
- <div class="l--sideMain -g:20" style="--sideW:12rem;--mainW:20rem">
51
+ <div class="l--withSide -g:20" style="--sideW:12rem;--mainW:20rem">
52
52
  <div class="l--box -p:15 -bd" style="--bdc:var(--blue)">
53
53
  <p>Main Content</p>
54
54
  <p>メインコンテンツ本文...</p>
@@ -64,16 +64,16 @@
64
64
  `flex-direction: row-reverse` を併用することで、横並びの時だけ順序を反転できます。**横並びで左側・縦並びで下側に Side を配置**したいときに便利。
65
65
 
66
66
  ```jsx
67
- <SideMain fxd="row-reverse" sideW="10rem" mainW="16rem" g="20">
67
+ <WithSide fxd="row-reverse" sideW="10rem" mainW="16rem" g="20">
68
68
  <Box>
69
69
  <p>Main content...</p>
70
70
  </Box>
71
71
  <Box isSide bgc="blue:20%">Side Content</Box>
72
- </SideMain>
72
+ </WithSide>
73
73
  ```
74
74
 
75
75
  ```html
76
- <div class="l--sideMain -fxd:row-reverse -g:20" style="--sideW:10rem;--mainW:16rem">
76
+ <div class="l--withSide -fxd:row-reverse -g:20" style="--sideW:10rem;--mainW:16rem">
77
77
  <div class="l--box">
78
78
  <p>Main content...</p>
79
79
  </div>
@@ -81,9 +81,31 @@
81
81
  </div>
82
82
  ```
83
83
 
84
+ ### メディアとテキストが交互に並ぶレイアウト
85
+
86
+ `l--withSide` は「メディア + テキスト」のペアを複数並べて、横並びの時はメディアの位置(左右)が交互に切り替わりつつも、縦並びの時はメディアが上側に統一されるレイアウトにも活用できる。
87
+
88
+ ```jsx
89
+ <Stack isContainer g="40">
90
+ <WithSide sideW="40%" g="30" ai="center">
91
+ <Frame ar="3/2" isSide max-h="50cqw">
92
+ <img src="..." alt="" width="960" height="640" />
93
+ </Frame>
94
+ <Box px="10">本文テキスト...</Box>
95
+ </WithSide>
96
+
97
+ <WithSide fxd="row-reverse" sideW="40%" g="30" ai="center">
98
+ <Frame ar="3/2" isSide max-h="50cqw">
99
+ <img src="..." alt="" width="960" height="640" />
100
+ </Frame>
101
+ <Box px="10">本文テキスト...</Box>
102
+ </WithSide>
103
+ </Stack>
104
+ ```
105
+
84
106
  ## `l--grid` との使い分け
85
107
 
86
- - **`l--sideMain`**: ブレイクポイントに依存せず、コンテンツ幅で自動切り替え
108
+ - **`l--withSide`**: ブレイクポイントに依存せず、コンテンツ幅で自動切り替え
87
109
  - **`l--grid`** (`<Grid gta={[...]} gtc={[...]} />`): ブレイクポイント(`sm`/`md`)で明示的に切り替えたい場合
88
110
 
89
111
  ```jsx
@@ -97,6 +119,6 @@
97
119
  ## 関連プリミティブ
98
120
 
99
121
  - [l--grid](./l--grid.md) — ブレイクポイント切り替え型の2カラム構築に使用
100
- - [l--fluidCols](./l--fluidCols.md) — カラム幅ベースの自動段組
101
- - [l--switchCols](./l--switchCols.md) — ブレイクポイント一括切り替え型カラム
102
- - [is--container](./is--container.md) — レスポンシブ Property Class 利用時に必要
122
+ - [l--autoColumns](./l--autoColumns.md) — カラム幅ベースの自動段組
123
+ - [l--switchColumns](./l--switchColumns.md) — ブレイクポイント一括切り替え型カラム
124
+ - [is--container](../trait-class/is--container.md) — レスポンシブ Property Class 利用時に必要
@@ -8,7 +8,7 @@ Lism CSS はコンテナクエリをデフォルトで採用しています。
8
8
  - [HTML / Property Class での指定](#html--property-class-での指定)
9
9
  - [Lism コンポーネントでの指定](#lism-コンポーネントでの指定)
10
10
 
11
- [詳細](https://lism-css.com/docs/responsive/)
11
+ [詳細](https://lism-css.com/docs/responsive.md)
12
12
 
13
13
  ---
14
14
 
@@ -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.md
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.md) — 角丸(`border-radius`)
127
+ - [`-bd-{side}` + `has--gutter`](../trait-class/has--gutter.md) — セクション区切りに使うと相性が良い
@@ -0,0 +1,140 @@
1
+ # -hov(ホバー)
2
+
3
+ hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで動作する系と、親の `set--var:hov` に連動する系の 2 系統に分かれる。
4
+
5
+ ## 基本情報
6
+
7
+ - クラス名: `-hov:-{prop}` / `-hov:{preset}` / `-hov:in:{preset}`
8
+ - Lism props: `hov`(`<Lism hov="-c">` / `<Box hov={{ bgc: 'brand' }}>` 等)
9
+ - SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/props/_hover.scss
10
+ - 公式ドキュメント: https://lism-css.com/docs/property-class/hov.md
11
+
12
+ ## 3 つの形式
13
+
14
+ | 形式 | 役割 |
15
+ |------|------|
16
+ | `-hov:-{prop}` | `--hov-{prop}` 変数を受け取り、hover 時に該当プロパティを変化させる |
17
+ | `-hov:{preset}` | hover 時のスタイルセットをプリセット名でまとめて適用する |
18
+ | `-hov:in:{preset}` | 親要素の `set--var:hov` を起点に、子要素のスタイルを変化させる |
19
+
20
+ `-hov:-{prop}` と `-hov:{preset}` は `@media (any-hover: hover)` 内で定義されるため、タッチデバイスでは無効。
21
+ `-hov:in:*` はメディアクエリ外で、親の `set--var:hov` がセットする `--_isHov` / `--_notHov` 変数で動作する。
22
+
23
+ トランジションを付けたい場合は [`has--transition`](../trait-class/has--transition.md) クラスを併用する。
24
+
25
+ ## `-hov:-{prop}` — プロパティ変更
26
+
27
+ `:hover` で直接動作する。クラスを付けるだけで初期値で変化する。
28
+
29
+ | クラス | 変化するプロパティ | 初期値 |
30
+ |--------|----------------------|--------|
31
+ | `-hov:-c` | `color` | `var(--hov-c, var(--link))` |
32
+ | `-hov:-bdc` | `border-color` | `var(--hov-bdc, currentColor)` |
33
+ | `-hov:-bgc` | `background-color` | `var(--hov-bgc, var(--base-2))` |
34
+ | `-hov:-o` | `opacity` | `var(--hov-o, var(--o--p))` |
35
+ | `-hov:-bxsh` | `box-shadow` | `var(--hov-bxsh, var(--bxsh--50))` |
36
+
37
+ 任意の値へ変化させたい場合は、`--hov-{prop}` 変数で値を指定する。
38
+
39
+ ```html
40
+ <!-- 初期値のまま使用 -->
41
+ <a class="is--boxLink -hov:-o -bgc:base-2 -bd -p:20" href="###">...</a>
42
+
43
+ <!-- 任意値を指定 -->
44
+ <a class="is--boxLink -hov:-bgc -hov:-c -bgc:base-2 -p:20"
45
+ style="--hov-bgc: var(--brand); --hov-c: var(--white)" href="###">...</a>
46
+ ```
47
+
48
+ ## `-hov:{preset}` — プリセット
49
+
50
+ hover 時のスタイルセットをプリセット名でまとめて適用する。
51
+
52
+ | クラス | 内容 |
53
+ |--------|------|
54
+ | `-hov:underline` | テキストに下線を表示 |
55
+ | `-hov:neutral` | 背景色にニュートラルグレーをブレンド |
56
+
57
+ プロジェクト固有のプリセットは、以下のように自作して追加できる。
58
+
59
+ ```scss
60
+ @media (any-hover: hover) {
61
+ .-hov\:shadowUp:hover {
62
+ box-shadow: var(--bxsh--40);
63
+ translate: 0 -3px;
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## `-hov:in:{preset}` — 親連動
69
+
70
+ 親要素に `set--var:hov` を付けると、`--_isHov` / `--_notHov` 変数が hover 状態に応じて切り替わる。`-hov:in:*` はこの変数を参照する仕組み。
71
+
72
+ | クラス | 効果 | 仕組み |
73
+ |--------|------|--------|
74
+ | `-hov:in:hide` | 親 hover 時にフェードアウト | `opacity: var(--_isHov, 0)` |
75
+ | `-hov:in:show` | 親 hover 時にフェードイン | `opacity: var(--_notHov, 0)` / `visibility: var(--_notHov, hidden)` |
76
+ | `-hov:in:zoom` | 親 hover 時にズーム | `scale: var(--_isHov, 1.1)` |
77
+
78
+ ```jsx
79
+ <Frame set="var:hov" isBoxLink href="#" ar="16/9">
80
+ <Media isLayer hasTransition hov="in:zoom" src="..." />
81
+ <Layer hasTransition hov="in:show" bgc="rgb(0 0 0 / 40%)">...</Layer>
82
+ </Frame>
83
+ ```
84
+
85
+ ## `<Lism>` コンポーネントでの `hov` 指定
86
+
87
+ `<Lism>`(およびその継承コンポーネント)の `hov` prop は、文字列・オブジェクトの 2 通りで指定できる。
88
+
89
+ ### 文字列指定
90
+
91
+ 入力した文字列がそのまま `-hov:{入力文字列}` クラスとして出力される。カンマ区切りで複数指定可能。**自動変換は行われない**(`"c"` → `-hov:-c` のような省略はサポートしない)。
92
+
93
+ ```jsx
94
+ <Lism hov="-o">...</Lism>
95
+ // → <div class="-hov:-o">...</div>
96
+
97
+ <Lism hov="shadowUp">...</Lism>
98
+ // → <div class="-hov:shadowUp">...</div>
99
+
100
+ <Lism hov="-c,-bxsh">...</Lism>
101
+ // → <div class="-hov:-c -hov:-bxsh">...</div>
102
+ ```
103
+
104
+ ### オブジェクト指定
105
+
106
+ 主に `-hov:-{prop}` に任意の値を渡す用途。`hov={{ prop: value }}` で `-hov:-{prop}` クラス + `--hov-{prop}` 変数を出力。
107
+
108
+ ```jsx
109
+ <Lism hov={{ c: 'red' }}>...</Lism>
110
+ // → <div class="-hov:-c" style="--hov-c: var(--red)">...</div>
111
+ ```
112
+
113
+ 値に `true` を指定すると `-hov:{key}` クラスのみ出力される。任意値プロップとプリセット/自作クラスを**同時に**指定したい時に使う。
114
+
115
+ ```jsx
116
+ <Lism hov={{ shadowUp: true }}>...</Lism>
117
+ // → <div class="-hov:shadowUp">...</div>
118
+
119
+ <Lism hov={{ c: 'red', shadowUp: true }}>...</Lism>
120
+ // → <div class="-hov:-c -hov:shadowUp" style="--hov-c: var(--red)">...</div>
121
+ ```
122
+
123
+ ## `has--transition` との併用
124
+
125
+ `-hov:*` による変化は即時に切り替わる。なめらかなトランジションを付けたい場合は `has--transition` を併用し、`--duration` で所要時間を調整する。
126
+
127
+ ```jsx
128
+ <BoxLink href="###" hasTransition bxsh="10" hov={{ bxsh: '40' }} bd p="20">...</BoxLink>
129
+ // → <a class="is--boxLink has--transition -bxsh:10 -hov:-bxsh -bd -p:20"
130
+ // style="--hov-bxsh: var(--bxsh--40)" href="###">...</a>
131
+
132
+ <BoxLink href="###" hasTransition hov={{ bdc: 'red' }} bd p="20"
133
+ style={{ '--duration': '.5s' }}>...</BoxLink>
134
+ ```
135
+
136
+ ## 関連
137
+
138
+ - [`has--transition`](../trait-class/has--transition.md) — hover 時の変化にトランジションを付ける
139
+ - [`set--var:hov`](../set-class.md#set--varhov) — 親の hover 状態を子要素に伝播させる仕組み
140
+ - [`set--var:bxsh`](../set-class.md) — `-hov:-bxsh` と組み合わせる場合の影色再計算