@lism-css/mcp 0.11.0 → 0.12.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/README.ja.md +4 -2
  2. package/README.md +4 -2
  3. package/dist/data/docs-index.json +278 -51
  4. package/dist/data/guides/SKILL.md +113 -0
  5. package/dist/data/guides/base-styles.md +106 -0
  6. package/dist/data/guides/components-core.md +338 -0
  7. package/dist/data/guides/components-ui.md +351 -0
  8. package/dist/data/guides/css-rules.md +146 -0
  9. package/dist/data/guides/module-class.md +162 -0
  10. package/dist/data/guides/prop-responsive.md +54 -0
  11. package/dist/data/guides/property-class.md +400 -0
  12. package/dist/data/guides/set-class.md +190 -0
  13. package/dist/data/guides/tokens.md +210 -0
  14. package/dist/data/guides/utility-class.md +81 -0
  15. package/dist/index.js +4 -0
  16. package/dist/lib/load-data.js +2 -11
  17. package/dist/lib/load-markdown.d.ts +6 -0
  18. package/dist/lib/load-markdown.js +29 -0
  19. package/dist/lib/markdown-utils.d.ts +42 -0
  20. package/dist/lib/markdown-utils.js +158 -0
  21. package/dist/lib/schemas.d.ts +0 -242
  22. package/dist/lib/schemas.js +0 -64
  23. package/dist/lib/search.d.ts +2 -16
  24. package/dist/lib/search.js +9 -68
  25. package/dist/lib/types.d.ts +0 -64
  26. package/dist/tools/convert-css.js +96 -55
  27. package/dist/tools/get-component.js +60 -29
  28. package/dist/tools/get-guide.d.ts +2 -0
  29. package/dist/tools/get-guide.js +45 -0
  30. package/dist/tools/get-overview.js +26 -39
  31. package/dist/tools/get-props-system.js +45 -33
  32. package/dist/tools/get-tokens.js +9 -14
  33. package/dist/tools/search-docs.js +27 -9
  34. package/package.json +2 -2
  35. package/dist/data/components.json +0 -564
  36. package/dist/data/overview.json +0 -114
  37. package/dist/data/props-system.json +0 -1147
  38. package/dist/data/tokens.json +0 -148
@@ -0,0 +1,54 @@
1
+ # レスポンシブ対応
2
+
3
+ Lism CSS はコンテナクエリをデフォルトで採用しています。
4
+ ブレークポイント: `sm: 480px`, `md: 800px`(`lg: 1120px` はカスタマイズにより利用可能)
5
+
6
+ ## TOC
7
+
8
+ - [HTML / Property Class での指定](#html--property-class-での指定)
9
+ - [Lism コンポーネントでの指定](#lism-コンポーネントでの指定)
10
+
11
+ [詳細](https://lism-css.com/docs/responsive/)
12
+
13
+ ---
14
+
15
+ ## HTML / Property Class での指定
16
+
17
+ ブレークポイント用のクラス `-{prop}_{bp}` と CSS変数 `--{prop}_{bp}` を組み合わせます。
18
+
19
+ ```html
20
+ <!-- sm 以上で p:30, md 以上で p:40 に切り替え -->
21
+ <div class="-p:20 -p_sm -p_md" style="--p_sm: var(--s30); --p_md: var(--s40)">
22
+ ...
23
+ </div>
24
+
25
+ <!-- sm 以上で fz を l に切り替え -->
26
+ <div class="-fz:s -fz_sm" style="--fz_sm: var(--fz--l)">
27
+ ...
28
+ </div>
29
+ ```
30
+
31
+ **仕組み:**
32
+ 1. `-p_sm` クラスは `@container (min-width: 480px)` 内で `padding: var(--p_sm)` を適用
33
+ 2. `--p_sm` 変数で切り替え先の値を指定
34
+ 3. `overwriteBaseVar` 対応の Prop はベース変数(`--p`)も上書きされる
35
+
36
+ ## Lism コンポーネントでの指定
37
+
38
+ 配列形式またはオブジェクト形式でレスポンシブ値を指定します。
39
+
40
+ ```jsx
41
+ // 配列形式: [デフォルト, sm, md]
42
+ <Box p={[20, 30, 40]} fz={['s', 'm', 'l']} />
43
+
44
+ // オブジェクト形式
45
+ <Box p={{ base: '20', sm: '30', md: '40' }} />
46
+ ```
47
+
48
+ 出力される HTML:
49
+
50
+ ```html
51
+ <div class="l--box -p:20 -p_sm -p_md -fz:s -fz_sm -fz_md"
52
+ style="--p_sm: var(--s30); --p_md: var(--s40); --fz_sm: var(--fz--m); --fz_md: var(--fz--l)">
53
+ </div>
54
+ ```
@@ -0,0 +1,400 @@
1
+ # Property Class
2
+
3
+ Property Class は、主要な CSS プロパティに対して頻繁に使用される値やトークンを手軽にセットできるユーティリティクラスです。
4
+ CSS Layer の外(最も高い詳細度)に配置され、`-{prop}(:{value})` / `-{prop}_{bp}` の形式で定義されています。
5
+
6
+ ## TOC
7
+
8
+ - [基本書式](#基本書式)
9
+ - [表の読み方](#表の読み方)
10
+ - [全 Prop 一覧](#全-prop-一覧)
11
+ - [特殊な Property Class](#特殊な-property-class)
12
+ - [ボーダー(`bd` 系)](#ボーダーbd-系)
13
+ - [ホバー(`hov` 系)](#ホバーhov-系)
14
+ - [その他](#その他)
15
+ - [値の省略形(例外一覧)](#値の省略形例外一覧)
16
+ - [Property Class の特殊な出力タイプ](#property-class-の特殊な出力タイプ)
17
+ - [Property Class の検索・一括修正](#property-class-の検索一括修正)
18
+
19
+ [詳細](https://lism-css.com/docs/property-class/)
20
+
21
+ ---
22
+
23
+ ## 基本書式
24
+
25
+ ### プリセット値
26
+
27
+ トークンやプリセットに対応する値は、`-{prop}:{value}` の書式でクラスを指定します。
28
+
29
+ ```html
30
+ <div class="-p:20 -fz:l -c:brand">...</div>
31
+ ```
32
+
33
+ ### カスタム値(任意の値)
34
+
35
+ トークンやプリセットに該当しない任意の値は、**`-{prop}` クラス** と **`--{prop}` CSS変数** の組み合わせで指定します。
36
+
37
+ ```html
38
+ <!-- カスタム値: .-{prop} クラス + --{prop} 変数 -->
39
+ <div class="-w" style="--w: 200px">...</div>
40
+ <div class="-gtc" style="--gtc: 1fr 2fr 1fr">...</div>
41
+ ```
42
+
43
+
44
+ ## 表の読み方
45
+
46
+ | カラム | 説明 |
47
+ |--------|------|
48
+ | **Prop** | クラス名に使う省略名(例: `-fz:l` の `fz` 部分)。Lism コンポーネントの Props 名でもある |
49
+ | **CSS プロパティ** | 実際に制御される CSS プロパティ |
50
+ | **プリセット値クラス** | そのまま使えるクラス名の一覧(`-{prop}:{value}` 形式)。`—` はカスタム値のみ対応 |
51
+ | **BP クラス** | ブレークポイント対応クラス。`—` は非対応 |
52
+
53
+
54
+ ## 全 Prop 一覧
55
+
56
+ ソース: [props.ts](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/config/defaults/props.ts)
57
+
58
+ ### タイポグラフィ
59
+
60
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
61
+ |------|--------------|-------------|-----|
62
+ | `f` | `font` | `-f:inherit` | — |
63
+ | `fz` | `font-size` | `-fz:root`, `-fz:base`, `-fz:5xl`〜`-fz:2xs` | `-fz_sm`, `-fz_md` |
64
+ | `fw` | `font-weight` | `-fw:light`, `-fw:normal`, `-fw:bold`, `-fw:100`〜`-fw:900` | — |
65
+ | `ff` | `font-family` | `-ff:base`, `-ff:accent`, `-ff:mono` | — |
66
+ | `fs` | `font-style` | `-fs:italic` | — |
67
+ | `lh` | `line-height`(`--hl` 経由) | `-lh:base`, `-lh:xs`, `-lh:s`, `-lh:l`, `-lh:1` | — |
68
+ | `hl` | `--hl` 変数のみ | — | `-hl_sm`, `-hl_md` |
69
+ | `lts` | `letter-spacing` | `-lts:base`, `-lts:s`, `-lts:l` | — |
70
+ | `ta` | `text-align` | `-ta:center`, `-ta:left`, `-ta:right` | — |
71
+ | `td` | `text-decoration` | `-td:none` | — |
72
+ | `tt` | `text-transform` | `-tt:upper`, `-tt:lower` | — |
73
+
74
+ **注意:** `lh` は `--hl`(half-leading)変数を介して `line-height: calc(1em + var(--hl) * 2)` を制御します。`hl` は `--hl` 変数を直接セットするだけの isVar タイプです。
75
+
76
+ ### 表示・可視性
77
+
78
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
79
+ |------|--------------|-------------|-----|
80
+ | `d` | `display` | `-d:none`, `-d:block`, `-d:flex`, `-d:inline-flex`, `-d:grid`, `-d:inline-grid` | `-d_sm`, `-d_md` |
81
+ | `o` | `opacity` | `-o:0`, `-o:-10`, `-o:-20`, `-o:-30` | — |
82
+ | `v` | `visibility` | `-v:hidden` | — |
83
+ | `ov` | `overflow` | `-ov:hidden`, `-ov:auto`, `-ov:clip` | — |
84
+ | `ov-x` | `overflow-x` | `-ov-x:clip`, `-ov-x:auto`, `-ov-x:scroll` | — |
85
+ | `ov-y` | `overflow-y` | `-ov-y:clip`, `-ov-y:auto`, `-ov-y:scroll` | — |
86
+ | `ar` | `aspect-ratio` | `-ar:21/9`, `-ar:16/9`, `-ar:3/2`, `-ar:1/1`, `-ar:og` | `-ar_sm`, `-ar_md` |
87
+
88
+ ### サイズ
89
+
90
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
91
+ |------|--------------|-------------|-----|
92
+ | `w` | `width` | `-w:100%`, `-w:fit` | `-w_sm`, `-w_md` |
93
+ | `h` | `height` | `-h:100%`, `-h:fit` | `-h_sm`, `-h_md` |
94
+ | `min-w` | `min-width` | `-min-w:100%` | `-min-w_sm`, `-min-w_md` |
95
+ | `max-w` | `max-width` | `-max-w:100%` | `-max-w_sm`, `-max-w_md` |
96
+ | `min-h` | `min-height` | `-min-h:100%` | `-min-h_sm`, `-min-h_md` |
97
+ | `max-h` | `max-height` | `-max-h:100%` | `-max-h_sm`, `-max-h_md` |
98
+ | `sz` | `inline-size` | — | — |
99
+ | `min-sz` | `min-inline-size` | — | — |
100
+ | `max-sz` | `max-inline-size` | `-max-sz:xs`, `-max-sz:s`, `-max-sz:m`, `-max-sz:l`, `-max-sz:xl`, `-max-sz:full`, `-max-sz:container` | — |
101
+ | `ysz` | `block-size` | — | — |
102
+ | `min-ysz` | `min-block-size` | — | — |
103
+ | `max-ysz` | `max-block-size` | — | — |
104
+
105
+ **`max-sz` の特殊クラス:**
106
+ - `-max-sz:full` — `max-inline-size: 100%`。`.set--gutter` 内では gutter 分を含めた全幅に拡張
107
+ - `-max-sz:container` — コンテナ幅に合わせる(`margin-inline` で中央配置)
108
+
109
+ ### 背景
110
+
111
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
112
+ |------|--------------|-------------|-----|
113
+ | `bg` | `background` | — | `-bg_sm`, `-bg_md` |
114
+ | `bgi` | `background-image` | — | — |
115
+ | `bgr` | `background-repeat` | `-bgr:no-repeat` | — |
116
+ | `bgp` | `background-position` | `-bgp:center` | — |
117
+ | `bgsz` | `background-size` | `-bgsz:cover`, `-bgsz:contain` | — |
118
+ | `bgc` | `background-color` | `-bgc:base`, `-bgc:base-2`, `-bgc:text`, `-bgc:brand`, `-bgc:accent`, `-bgc:inherit`, `-bgc:transparent` | — |
119
+
120
+ ### カラー
121
+
122
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
123
+ |------|--------------|-------------|-----|
124
+ | `c` | `color` | `-c:base`, `-c:text`, `-c:text-2`, `-c:brand`, `-c:accent`, `-c:inherit` | — |
125
+ | `keycolor` | `--keycolor` 変数のみ | — | — |
126
+
127
+ セマンティックカラー: `base`, `base-2`, `text`, `text-2`, `divider`, `link`, `brand`, `accent`
128
+ パレットカラー: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `gray`, `white`, `black`, `keycolor`
129
+
130
+ ### 角丸
131
+
132
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
133
+ |------|--------------|-------------|-----|
134
+ | `bdrs` | `border-radius` | `-bdrs:0`, `-bdrs:10`, `-bdrs:20`, `-bdrs:30`, `-bdrs:40`, `-bdrs:99`, `-bdrs:inner` | `-bdrs_sm`, `-bdrs_md` |
135
+ | `bdrs-tl` | `border-top-left-radius` | — | — |
136
+ | `bdrs-tr` | `border-top-right-radius` | — | — |
137
+ | `bdrs-br` | `border-bottom-right-radius` | — | — |
138
+ | `bdrs-bl` | `border-bottom-left-radius` | — | — |
139
+ | `bdrs-ss` | `border-start-start-radius` | — | — |
140
+ | `bdrs-se` | `border-start-end-radius` | — | — |
141
+ | `bdrs-es` | `border-end-start-radius` | — | — |
142
+ | `bdrs-ee` | `border-end-end-radius` | — | — |
143
+
144
+ ### 影
145
+
146
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
147
+ |------|--------------|-------------|-----|
148
+ | `bxsh` | `box-shadow` | `-bxsh:0`, `-bxsh:10`, `-bxsh:20`, `-bxsh:30`, `-bxsh:40` | `-bxsh_sm`, `-bxsh_md` |
149
+
150
+ **注意:** `bxsh` の使用時は `set--shadow` クラスの併用が必要です(影色 `--shc` の再計算のため)。
151
+
152
+ ### ポジション
153
+
154
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
155
+ |------|--------------|-------------|-----|
156
+ | `pos` | `position` | `-pos:static`, `-pos:fixed`, `-pos:sticky`, `-pos:relative`, `-pos:absolute` | — |
157
+ | `z` | `z-index` | `-z:-1`, `-z:0`, `-z:1`, `-z:99` | — |
158
+ | `t` | `top` | `-t:0`, `-t:50%`, `-t:100%` | — |
159
+ | `l` | `left` | `-l:0`, `-l:50%`, `-l:100%` | — |
160
+ | `r` | `right` | `-r:0`, `-r:50%`, `-r:100%` | — |
161
+ | `b` | `bottom` | `-b:0`, `-b:50%`, `-b:100%` | — |
162
+ | `i` | `inset` | `-i:0` | — |
163
+ | `i-x` | `inset-inline` | — | — |
164
+ | `i-y` | `inset-block` | — | — |
165
+ | `i-x-s` | `inset-inline-start` | — | — |
166
+ | `i-x-e` | `inset-inline-end` | — | — |
167
+ | `i-y-s` | `inset-block-start` | — | — |
168
+ | `i-y-e` | `inset-block-end` | — | — |
169
+
170
+ ### スペーシング — Padding
171
+
172
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
173
+ |------|--------------|-------------|-----|
174
+ | `p` | `padding` | `-p:0`, `-p:5`, `-p:10`, `-p:20`, ... (SPACE トークン) | `-p_sm`, `-p_md` |
175
+ | `px` | `padding-inline` | `-px:0`, `-px:5`, `-px:10`, `-px:20`, ... (SPACE トークン) | `-px_sm`, `-px_md` |
176
+ | `py` | `padding-block` | `-py:0`, `-py:5`, `-py:10`, `-py:20`, ... (SPACE トークン) | `-py_sm`, `-py_md` |
177
+ | `px-s` | `padding-inline-start` | — | `-px-s_sm`, `-px-s_md` |
178
+ | `px-e` | `padding-inline-end` | — | `-px-e_sm`, `-px-e_md` |
179
+ | `py-s` | `padding-block-start` | — | `-py-s_sm`, `-py-s_md` |
180
+ | `py-e` | `padding-block-end` | — | `-py-e_sm`, `-py-e_md` |
181
+ | `pl` | `padding-left` | — | `-pl_sm`, `-pl_md` |
182
+ | `pr` | `padding-right` | — | `-pr_sm`, `-pr_md` |
183
+ | `pt` | `padding-top` | — | `-pt_sm`, `-pt_md` |
184
+ | `pb` | `padding-bottom` | — | `-pb_sm`, `-pb_md` |
185
+
186
+ SPACE トークン(全値): `5`, `10`, `15`, `20`, `30`, `40`, `50`, `60`, `70`, `80`
187
+
188
+ ### スペーシング — Margin
189
+
190
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
191
+ |------|--------------|-------------|-----|
192
+ | `m` | `margin` | `-m:auto`, `-m:0`, `-m:5`, `-m:10`, `-m:20`, ... (SPACE トークン) | `-m_sm`, `-m_md` |
193
+ | `mx` | `margin-inline` | `-mx:auto`, `-mx:0`, `-mx:5`, `-mx:10`, `-mx:20`, ... (SPACE トークン) | `-mx_sm`, `-mx_md` |
194
+ | `my` | `margin-block` | `-my:auto`, `-my:0`, `-my:5`, `-my:10`, `-my:20`, ... (SPACE トークン) | `-my_sm`, `-my_md` |
195
+ | `mx-s` | `margin-inline-start` | `-mx-s:auto` | `-mx-s_sm`, `-mx-s_md` |
196
+ | `mx-e` | `margin-inline-end` | `-mx-e:auto` | `-mx-e_sm`, `-mx-e_md` |
197
+ | `my-s` | `margin-block-start` | `-my-s:auto`, `-my-s:0`, `-my-s:5`, `-my-s:10`, `-my-s:20`, ... (SPACE トークン) | `-my-s_sm`, `-my-s_md` |
198
+ | `my-e` | `margin-block-end` | `-my-e:auto` | `-my-e_sm`, `-my-e_md` |
199
+ | `ml` | `margin-left` | — | `-ml_sm`, `-ml_md` |
200
+ | `mr` | `margin-right` | — | `-mr_sm`, `-mr_md` |
201
+ | `mt` | `margin-top` | — | `-mt_sm`, `-mt_md` |
202
+ | `mb` | `margin-bottom` | — | `-mb_sm`, `-mb_md` |
203
+
204
+ ### Gap
205
+
206
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
207
+ |------|--------------|-------------|-----|
208
+ | `g` | `gap` | `-g:0`, `-g:inherit`, `-g:5`, `-g:10`, `-g:20`, ... (SPACE トークン) | `-g_sm`, `-g_md` |
209
+ | `cg` | `column-gap` | — | `-cg_sm`, `-cg_md` |
210
+ | `rg` | `row-gap` | — | `-rg_sm`, `-rg_md` |
211
+
212
+ ### Flex
213
+
214
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
215
+ |------|--------------|-------------|-----|
216
+ | `fxf` | `flex-flow` | — | — |
217
+ | `fxw` | `flex-wrap` | `-fxw:wrap` | `-fxw_sm`, `-fxw_md` |
218
+ | `fxd` | `flex-direction` | `-fxd:column`, `-fxd:column-reverse`, `-fxd:row-reverse` | `-fxd_sm`, `-fxd_md` |
219
+ | `fx` | `flex` | `-fx:1` | `-fx_sm`, `-fx_md` |
220
+ | `fxg` | `flex-grow` | `-fxg:1` | — |
221
+ | `fxsh` | `flex-shrink` | `-fxsh:0` | — |
222
+ | `fxb` | `flex-basis` | — | `-fxb_sm`, `-fxb_md` |
223
+
224
+ ### Grid
225
+
226
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
227
+ |------|--------------|-------------|-----|
228
+ | `gt` | `grid-template` | — | `-gt_sm`, `-gt_md` |
229
+ | `gta` | `grid-template-areas` | — | `-gta_sm`, `-gta_md` |
230
+ | `gtc` | `grid-template-columns` | `-gtc:subgrid` | `-gtc_sm`, `-gtc_md` |
231
+ | `gtr` | `grid-template-rows` | `-gtr:subgrid` | `-gtr_sm`, `-gtr_md` |
232
+ | `gaf` | `grid-auto-flow` | `-gaf:row`, `-gaf:column` | `-gaf_sm`, `-gaf_md` |
233
+ | `gac` | `grid-auto-columns` | — | — |
234
+ | `gar` | `grid-auto-rows` | — | — |
235
+ | `cols` | `--cols` 変数 | — | `-cols_sm`, `-cols_md` |
236
+ | `rows` | `--rows` 変数 | — | `-rows_sm`, `-rows_md` |
237
+
238
+ ### Grid アイテム
239
+
240
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
241
+ |------|--------------|-------------|-----|
242
+ | `ga` | `grid-area` | `-ga:1/1` | `-ga_sm`, `-ga_md` |
243
+ | `gc` | `grid-column` | `-gc:1/-1` | `-gc_sm`, `-gc_md` |
244
+ | `gr` | `grid-row` | `-gr:1/-1` | `-gr_sm`, `-gr_md` |
245
+ | `gcs` | `grid-column-start` | — | — |
246
+ | `gce` | `grid-column-end` | — | — |
247
+ | `grs` | `grid-row-start` | — | — |
248
+ | `gre` | `grid-row-end` | — | — |
249
+
250
+ ### 配置(Places)
251
+
252
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
253
+ |------|--------------|-------------|-----|
254
+ | `ai` | `align-items` | `-ai:start`, `-ai:center`, `-ai:end`, `-ai:stretch`, `-ai:flex-start`, `-ai:flex-end` | `-ai_sm`, `-ai_md` |
255
+ | `ac` | `align-content` | `-ac:start`, `-ac:center`, `-ac:end`, `-ac:flex-start`, `-ac:flex-end`, `-ac:between` | `-ac_sm`, `-ac_md` |
256
+ | `ji` | `justify-items` | `-ji:start`, `-ji:center`, `-ji:end`, `-ji:stretch`, `-ji:flex-start`, `-ji:flex-end` | `-ji_sm`, `-ji_md` |
257
+ | `jc` | `justify-content` | `-jc:start`, `-jc:center`, `-jc:end`, `-jc:flex-start`, `-jc:flex-end`, `-jc:between` | `-jc_sm`, `-jc_md` |
258
+ | `pi` | `place-items` | `-pi:start`, `-pi:center`, `-pi:end` | — |
259
+ | `pc` | `place-content` | `-pc:start`, `-pc:center`, `-pc:end` | — |
260
+ | `aslf` | `align-self` | `-aslf:start`, `-aslf:center`, `-aslf:end`, `-aslf:stretch` | — |
261
+ | `jslf` | `justify-self` | `-jslf:start`, `-jslf:center`, `-jslf:end`, `-jslf:stretch` | — |
262
+ | `pslf` | `place-self` | `-pslf:start`, `-pslf:center`, `-pslf:end` | — |
263
+ | `order` | `order` | `-order:0`, `-order:-1`, `-order:1` | — |
264
+
265
+ **コンポーネント用ショートハンド:** `ai`, `ac`, `ji`, `jc`, `aslf`, `jslf` では `s`→`start`, `e`→`end`, `c`→`center`, `fs`→`flex-start`, `fe`→`flex-end` のショートハンドが使えます。
266
+
267
+ ## 特殊な Property Class
268
+
269
+ 以下は通常の `.-{prop}:{value}` パターンとは異なる特殊な仕組みを持つ Prop です。
270
+
271
+ ### ボーダー(`bd` 系)
272
+
273
+ [詳細](https://lism-css.com/docs/props/bd/)
274
+
275
+ Lism CSS のボーダーは CSS 変数(`--bds`, `--bdw`, `--bdc`)で管理される特殊な仕様です。
276
+ `-bd` または `-bd-{side}` クラスを付けると、初期値(`--bds: solid`, `--bdw: 1px`, `--bdc: var(--divider)`)がセットされ、`bds`, `bdc`, `bdw` Prop で個別に上書きできます。
277
+
278
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
279
+ |------|--------------|-------------|-----|
280
+ | `bd` | `border`(変数管理を有効化) | `-bd:none` | — |
281
+ | `bds` | `--bds` 変数 | `-bds:dashed`, `-bds:dotted`, `-bds:double` | — |
282
+ | `bdc` | `--bdc` 変数 | `-bdc:brand`, `-bdc:accent`, `-bdc:divider`, `-bdc:inherit`, `-bdc:transparent`, `-bdc:current` | — |
283
+ | `bdw` | `--bdw` 変数 | — | `-bdw_sm`, `-bdw_md` |
284
+
285
+ **方向指定:**
286
+
287
+ | Prop | CSS プロパティ |
288
+ |------|--------------|
289
+ | `bd-x` | `border-inline` |
290
+ | `bd-y` | `border-block` |
291
+ | `bd-x-s` | `border-inline-start` |
292
+ | `bd-x-e` | `border-inline-end` |
293
+ | `bd-y-s` | `border-block-start` |
294
+ | `bd-y-e` | `border-block-end` |
295
+ | `bd-t` | `border-top` |
296
+ | `bd-b` | `border-bottom` |
297
+ | `bd-l` | `border-left` |
298
+ | `bd-r` | `border-right` |
299
+
300
+ ```jsx
301
+ // JSX: ボーダー + カスタマイズ
302
+ <Box bd bdc="brand" bdw="2px" bds="dashed">...</Box>
303
+
304
+ // HTML
305
+ <div class="l--box -bd -bdc:brand" style="--bdw: 2px; --bds: dashed">...</div>
306
+
307
+ // 方向指定
308
+ <Box bd-y bdc="divider">...</Box>
309
+ // → <div class="l--box -bd-y -bdc:divider">...</div>
310
+ ```
311
+
312
+ ### ホバー(`hov` 系)
313
+
314
+ [詳細](https://lism-css.com/docs/props/hov/)
315
+
316
+ ホバーエフェクト用のクラスです。`-hov:{prop}` 系と `-hov:to:*` 系の2種類があります。
317
+
318
+ **`-hov:{prop}` — ホバー時のプロパティ変更**
319
+
320
+ `:hover` 擬似クラスで直接動作します(`set--hov` は不要)。`@media (any-hover: hover)` 内で定義され、タッチデバイスでは無効になります。
321
+
322
+ | クラス | 効果 | デフォルト値 |
323
+ |--------|------|-------------|
324
+ | `-hov:c` | テキスト色を変更 | `var(--hov-c, var(--link))` |
325
+ | `-hov:bgc` | 背景色を変更 | `var(--hov-bgc, var(--base-2))` |
326
+ | `-hov:bdc` | ボーダー色を変更 | `var(--hov-bdc, currentColor)` |
327
+ | `-hov:o` | 不透明度を変更 | `var(--hov-o, 0.7)` |
328
+ | `-hov:bxsh` | シャドウを変更 | `var(--hov-bxsh, var(--bxsh--40))` |
329
+ | `-hov:neutral` | ニュートラルグレーを混合 | `color-mix(...)` |
330
+
331
+ ```jsx
332
+ // JSX: ホバーで色変更(set--hov なしで動作する)
333
+ <Link hov={{ c: true }}>リンク</Link>
334
+ // → <a class="-hov:c" href="...">リンク</a>
335
+
336
+ // カスタム値を指定
337
+ <Box hov={{ bgc: true }} style={{ '--hov-bgc': 'var(--brand)' }}>...</Box>
338
+ ```
339
+
340
+ **`-hov:to:*` — `set--hov` 連動のトランジションクラス**
341
+
342
+ `set--hov` がセットする `--_isHov` / `--_notHov` 変数を利用して動作します。`set--hov` と `set--transition` の併用が必要です。
343
+
344
+ | クラス | 効果 | 仕組み |
345
+ |--------|------|--------|
346
+ | `-hov:to:hide` | ホバー時にフェードアウト | `opacity: var(--_isHov, 0)` |
347
+ | `-hov:to:show` | ホバー時にフェードイン | `opacity: var(--_notHov, 0)` |
348
+ | `-hov:to:zoom` | ホバー時にズーム | `scale: var(--_isHov, 1.1)` |
349
+
350
+ ```jsx
351
+ // set--hov + set--transition が必要
352
+ <Box set={['hov', 'transition']}>
353
+ <Box hov={{ to: 'show' }}>ホバーで表示</Box>
354
+ </Box>
355
+ ```
356
+
357
+ ## その他
358
+
359
+ | Prop | CSS プロパティ | プリセット値クラス | BP クラス |
360
+ |------|--------------|-------------|-----|
361
+ | `ovwrap` | `overflow-wrap` | `-ovwrap:anywhere` | — |
362
+ | `whspace` | `white-space` | `-whspace:nowrap` | — |
363
+ | `float` | `float` | `-float:left`, `-float:right` | — |
364
+ | `clear` | `clear` | `-clear:both` | — |
365
+ | `isolation` | `isolation` | `-isolation:isolate` | — |
366
+
367
+
368
+ ## 値の省略形(例外一覧)
369
+
370
+ Property Class の値名は基本的に CSS の実値と同じですが、以下は省略形が使われます。
371
+
372
+ | クラス例 | 実際の CSS 値 | 対象 Prop |
373
+ |----------|------------|-----------|
374
+ | `-tt:upper` | `text-transform: uppercase` | `tt` |
375
+ | `-tt:lower` | `text-transform: lowercase` | `tt` |
376
+ | `-w:fit` | `width: fit-content` | `w`, `h` |
377
+ | `-ac:between` | `align-content: space-between` | `ac`, `jc` |
378
+ | `-bdc:current` | `border-color: currentColor` | `bdc` |
379
+
380
+
381
+ ## Property Class の特殊な出力タイプ
382
+
383
+ ### `alwaysVar` タイプ
384
+
385
+ `fz`, `p`, `px`, `py`, `m`, `mx`, `my`, `g`, `c`, `bgc`, `bdrs`, `bxsh` など。
386
+ プリセット値クラス(`-p:20`)でも常に CSS 変数(`--p`)経由で値が適用されます。これにより、子要素や疑似要素から `var(--p)` で親の値を参照できます。
387
+
388
+
389
+ ## Property Class の検索・一括修正
390
+
391
+ Property Class をコードベース全体で一括修正する場合、同じ Prop が**複数の書式**で出現するため、以下のパターンをすべて検索する必要があります。
392
+
393
+ | 出現場所 | 検索パターン例(`p` の場合) |
394
+ |---------|--------------------------|
395
+ | HTML / className — プリセット値 | `-p:20` |
396
+ | HTML / className — BP対応・カスタム値 | `-p` / `-p_sm` / `-p_md` |
397
+ | JSX Props | `p="20"` / `p={20}` / `p={[20, 30]}` |
398
+ | getLismProps オブジェクト | `{ p: '20' }` / `{ p: 20 }` |
399
+
400
+
@@ -0,0 +1,190 @@
1
+ # `set--` クラス
2
+
3
+ `@layer lism-base` に属し、特定の機能を有効にするために CSS変数やベーススタイルをセットアップするクラス群です。
4
+ HTML では直接クラスを付与し、Lism コンポーネントでは `set` prop(`set="plain"`, `set="shadow"` 等)で指定します。
5
+
6
+ ## TOC
7
+
8
+ - [`set--plain`](#set--plain)
9
+ - [`set--shadow`](#set--shadow)
10
+ - [`set--hov`](#set--hov)
11
+ - [`set--transition`](#set--transition)
12
+ - [`set--gutter`](#set--gutter)
13
+ - [`set--innerRs`](#set--innerrs)
14
+ - [`set--bp`](#set--bp)
15
+
16
+ [詳細](https://lism-css.com/docs/set/)
17
+
18
+ ---
19
+
20
+ ## 対応ソースコード
21
+
22
+ ソース: https://github.com/lism-css/lism-css/tree/main/packages/lism-css/src/scss/base/set
23
+
24
+ | クラス | ソースファイル |
25
+ |--------|---------------|
26
+ | `set--plain` | [`_plain.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_plain.scss) |
27
+ | `set--shadow` | [`_shadow.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/tokens/_shadow.scss) |
28
+ | `set--hov` | [`_hov.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_hov.scss) |
29
+ | `set--transition` | [`_transition.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_transition.scss) |
30
+ | `set--gutter` | [`_gutter.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_gutter.scss) |
31
+ | `set--innerRs` | [`_innerRs.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_innerRs.scss) |
32
+ | `set--bp` | [`_bp.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/set/_bp.scss) |
33
+
34
+ ---
35
+
36
+ ## `set--plain`
37
+
38
+ `width`, `color`, `font`, `pading`, `border`など、ブラウザデフォルトスタイルを完全にリセットします。
39
+ ボタン・リンク等のスタイリング時に活用します。
40
+
41
+ 使用例:
42
+ ```html
43
+ <button class="set--plain">...</button>
44
+ ```
45
+ ```jsx
46
+ <Lism as="button" set="plain">...</Lism>
47
+ ```
48
+
49
+ ## `set--shadow`
50
+
51
+ `SHADOW`トークン変数(`--bxsh--{token}`)を再計算するためのクラスです。`:root` で定義される `--shc`(影の色)を特定要素で上書きしたい時に利用します。
52
+
53
+ 使用例:
54
+
55
+ ```html
56
+ <div class="l--box set--shadow -bxsh:20" style="--shc: hsl(200 50% 50% / 20%)">...</div>
57
+ ```
58
+ ```jsx
59
+ <Box set="shadow" bxsh='20' style={{ '--shc': 'hsl(200 50% 50% / 20%)' }}>...</Box>
60
+ ```
61
+
62
+
63
+
64
+ ## `set--hov`
65
+
66
+ ホバー状態の判定変数(`--_notHov`, `--_isHov`)を次のようにセットします。主に**子要素のホバースタイルを制御する**時に活用します。
67
+
68
+ - `--_isHov`は非hover時(かつ非focus-within時)にのみ空白定義さます。
69
+ - `--_notHov`は逆に、hover時またはfocus-within時に空白定義されます。
70
+
71
+ この空変数トリックにより、次のような書き方ができます。
72
+
73
+ - `var(--_isHov, {ホバー時に適用させたい値})`
74
+ - `var(--_notHov, {非ホバー時に適用させたい値})`
75
+
76
+ (`var(--_isHov, ...) var(--_notHov, ...)`とするとホバー前後のスタイルを1行で書くこともできますが、`box-shadow`などの半角スペースで区切って値を調整するプロパティではこの書き方無効となります。)
77
+
78
+ 使用例:
79
+
80
+ ```html
81
+ <div class="-hov:test">...</div>
82
+ ```
83
+ ```css
84
+ .-hov\:test {
85
+ color: var(--_isHov, green) var(--_notHov, red); /* hover時はgreen, 非hover時はred*/
86
+ box-shadow: var(--_isHov, var(--bxsh--30)); /* hover時はshadowをつける(非hover時は無効な値) */
87
+ opacity: var(--_notHov, var(--o--n20)); /* 非hover時は不透明度を下げる(hover時は無効な値) */
88
+ }
89
+ ```
90
+
91
+ さらに、親要素に`set--hov`を付与してその子要素で`--_isHov`変数と`--_notHov`変数を使うことで、親要素のhoverをトリガーとして子要素のスタイルを変化させることも可能になります。
92
+
93
+ 例えば、親のボックスがhoverされたら、その内部の画像をズームするようなケースで活用でき、`-hov:to:zoom`クラスが標準で用意されています。
94
+
95
+ ```html
96
+ <a href="###" class="l--frame is--linkBox set--hov -ar:21/9 -ov:hidden">
97
+ <img class="set--transition -hov:to:zoom" src="https://cdn.lism-css.com/img/a-2.jpg" width="960" height="640" loading="lazy" />
98
+ <div class="is--layer -bgc" style="--c: #fff; --bgc: rgb(0 0 0 / 50%)"></div>
99
+ <div class="l--center is--layer -c" style="--c: #fff;">
100
+ <span class="-fz:xl">バナーリンク</span>
101
+ </div>
102
+ </a>
103
+ ```
104
+
105
+ ```css
106
+ .-hov\:to\:zoom {
107
+ --transProp: scale;
108
+ scale: var(--_isHov, 1.1);
109
+ }
110
+ ```
111
+
112
+
113
+ ## `set--transition`
114
+
115
+ トランジション用の CSS をセットアップします。
116
+
117
+ ```scss
118
+ .set--transition {
119
+ transition: var(--hov-duration, 0.25s) var(--hov-ease, linear) var(--hov-delay, 0s);
120
+ transition-property: var(--hov-prop, all);
121
+ }
122
+ ```
123
+
124
+ | カスタム変数 | デフォルト |
125
+ |-------------|-----------|
126
+ | `--hov-prop` | `all` |
127
+ | `--hov-duration` | `0.25s` |
128
+ | `--hov-ease` | `linear` |
129
+ | `--hov-delay` | `0s` |
130
+
131
+ ```html
132
+ <div class="set--transition -hov:c" style="--hov-prop: color; --hov-c: var(--red);">...</div>
133
+ ```
134
+ ```jsx
135
+ <Lism set="transition" hov={{c: 'red'}} style={{ '--hov-prop': 'color'}}>...</Lism>
136
+ ```
137
+
138
+
139
+
140
+ ## `set--gutter`
141
+
142
+ 要素に左右パディングを適用します。`--gutter-size` のデフォルトは `var(--s30)` です。
143
+
144
+ ```scss
145
+ .set--gutter {
146
+ padding-inline: var(--gutter-size);
147
+ }
148
+ ```
149
+
150
+ ```html
151
+ <div class="set--gutter">...</div>
152
+ ```
153
+ ```jsx
154
+ <Lism set="gutter">...</Lism>
155
+ ```
156
+
157
+
158
+ ## `set--innerRs`
159
+
160
+ 親要素の角丸(`--bdrs`)とPadding(`--p`)の値から、その内側の角丸(`--bdrs--inner`)を自動計算するためのクラスです。
161
+ 親要素に`set--innerRs`をクラスをセットし、子要素では`-bdrs:inner`をセットすることで、計算された`--bdrs--inner`をセットすることができます。
162
+
163
+ (親要素では`bdrs`と`p`の指定が必須となります。)
164
+
165
+ 使用例:
166
+ ```html "set--innerRs" "-bdrs:inner"
167
+ <div class="set--innerRs -p:15 -bdrs:40 -bd">
168
+ <div class="-bdrs:inner">...</div>
169
+ </div>
170
+ ```
171
+ ```jsx
172
+ <Lism set="innerRs" p="15" bdrs="40" bd>
173
+ <Lism bdrs="inner">...</Lism>
174
+ </Lism>
175
+ ```
176
+
177
+
178
+ ## `set--bp`
179
+
180
+ ブレークポイント判定用の hack 変数をセットします。コンテナクエリで各ブレークポイントを超えた時に空変数がセットされ、CSS の空変数トリックで条件分岐に使えます。
181
+ `sm`, `md`にのみ対応しています。(`--_is_sm`, `--_is_md`が定義されます。)
182
+
183
+ smサイズ以上でテキストカラーを赤に変える例:
184
+
185
+ ```html
186
+ <div class="set--bp -p:20" style="color: var(--_is_sm) red">...</div>
187
+ ```
188
+ ```jsx
189
+ <Lism set="bp" p="20" style={{ color: 'var(--_is_sm) red;' }}>...</Lism>
190
+ ```