@lism-css/mcp 0.18.0 → 0.22.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.
@@ -9,7 +9,7 @@ description: "Lism CSS の設計・実装に関するガイド。CSSの編集・
9
9
 
10
10
  調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
11
11
 
12
- > **バージョン情報:** このガイドは `lism-css@0.18.0` / `@lism-css/ui@0.17.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
12
+ > **バージョン情報:** このガイドは `lism-css@0.22.0` / `@lism-css/ui@0.22.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
13
13
 
14
14
  公式ドキュメント: https://lism-css.com/docs/overview.md
15
15
 
@@ -8,6 +8,7 @@ AI が Lism CSS のコードを生成する際に間違いやすい記法と、
8
8
  - [px / 固定値の直書き](#px--固定値の直書き)
9
9
  - [Property Class で書けるのに CSS で書く](#property-class-で書けるのに-css-で書く)
10
10
  - [`is--` の誤用(状態・バリエーション)](#is---の誤用状態バリエーション)
11
+ - [カスタムクラスを全て `c--` にしてしまう](#カスタムクラスを何でも-c---にしない)
11
12
  - [クラス名の命名ミス(kebab-case)](#クラス名の命名ミスkebab-case)
12
13
  - [`--keycolor` の誤用](#--keycolor-の誤用)
13
14
  - [Prop 型ミス](#prop-型ミス)
@@ -32,7 +33,7 @@ Lism CSS側が用意しているトークン値と異なるものを書かない
32
33
  | `c="muted"` | `c="text-2"` | 補助テキスト色は `text-2` |
33
34
  | `c="danger"` | `c="red"` | パレットカラーから選ぶ(`red` / `orange` 等) |
34
35
 
35
- - セマンティックカラー: `base` / `base-2` / `text` / `text-2` / `divider` / `link` / `brand` / `accent`
36
+ - セマンティックカラー: `base` / `base-2` / `text` / `text-2` / `divider` / `link` / `brand` / `accent` / `neutral`
36
37
  - パレットカラー: `red` / `blue` / `green` / `yellow` / `purple` / `orange` / `pink` / `gray` / `white` / `black`
37
38
 
38
39
  ### スペース(`p` / `m` / `g` 等)
@@ -158,7 +159,23 @@ Lism CSS の `is--` プレフィックスは「**〜である**」という**役
158
159
  | `<span class="c--tag is--solid">` + `.c--tag.is--solid { ... }` | `<span class="c--tag c--tag--solid">` + `.c--tag.c--tag--solid { ... }` |
159
160
  | `<button class="c--button is--outline">` | `<button class="c--button c--button--outline">` |
160
161
 
161
- なお、「色だけ違う」程度ならマークアップ側で `-bgc:* -c:*` を差し替えるだけで済むことも多い。
162
+ なお、Modifier であってもまずは [Property Class で表現できないか](#property-class-で書けるのに-css-で書く) を検討すること。「色だけ違う」程度ならマークアップ側で `-bgc:* -c:*` を差し替えるだけで済むことも多い。
163
+
164
+ ---
165
+
166
+ ## カスタムクラスを全て `c--` にしてしまう
167
+
168
+ `c--` は「**コンポーネント**(再利用可能な UI 部品)」を表すプレフィックス。**カスタムクラスを必ず `c--` で命名する必要はない**。サイトの大まかな領域(header / sidebar / main / footer 等)やページ固有のスタイルなど、再利用が前提でないクラスは、独自プレフィックス(`z--` / `p--` 等)やプレフィックスなしの命名も選択肢として検討すること。
169
+
170
+ → 詳細: [css-rules.md の独自プレフィックス](./css-rules.md#独自プレフィックス)
171
+
172
+ | 用途 | 命名の例 | 配置レイヤー |
173
+ |---|---|---|
174
+ | 再利用可能な UI 部品 | `c--button` / `c--card` / `c--tag` | `@layer lism-component` |
175
+ | サイトのゾーニング | `z--header` / `z--sidebar` / `z--articleBody`(または `header` / `sidebar` / `articleBody`) | `@layer lism-custom` |
176
+ | ページ固有のスタイル | `p--front` / `p--post`(または `frontPage` / `postPage`) | `@layer lism-custom` |
177
+
178
+ `c--header` のような命名も間違いとまでは言えないが、「カスタムクラス=必ず `c--`」ではないことに注意する。
162
179
 
163
180
  ---
164
181
 
@@ -226,133 +243,6 @@ Lism CSS では、プレフィックス(`c--` / `is--` / `has--` / `u--` / `se
226
243
 
227
244
  ---
228
245
 
229
- ## px / 固定値の直書き
230
-
231
- デザインデータ由来の px / rem / em をそのまま書くと、Lism CSS のスケール統一が崩れる。**書く前に [SKILL.md のデザインデータ取り込み時のフロー](./SKILL.md#デザインデータ取り込み時のフロー) に従い、ユーザーに「A: そのまま採用 / B: 最寄りトークンに丸める / C: トークン基準値を上書きする」を確認すること**。確認なしに固定値を採用しない。
232
-
233
- ### スペース・サイズ
234
-
235
- | NG | OK | 理由 |
236
- |---|---|---|
237
- | `padding: 3px 10px` | `padding: var(--s5) var(--s10)` または Props で `py="5" px="10"` | `3px` はトークン外。最寄りは `--s5`(4px) |
238
- | `min-width: 28px; height: 28px` | `min-w` / `h` をトークン値に丸める、または基準値を上書き | `28px` はトークン外 |
239
- | `gap: var(--s5); padding: var(--s10) var(--s15)` を CSS で直書き | `<Lism g="5" py="10" px="15">` | Property Class / Props で書ける |
240
-
241
- ### 角丸・ボーダー
242
-
243
- | NG | OK | 理由 |
244
- |---|---|---|
245
- | `border-radius: 2px` | `border-radius: var(--bdrs--10)`(4px) | 角丸トークンの最小は `--bdrs--10`(4px)。`2px` はトークン外 |
246
- | `border-radius: 6px` | `--bdrs--10`(4px)か `--bdrs--20`(8px)に丸める | 6px はトークン外 |
247
-
248
- ### タイポグラフィ
249
-
250
- | NG | OK | 理由 |
251
- |---|---|---|
252
- | `font-size: 13px` を直書き | `font-size: var(--fz--xs)` または Props で `fz="xs"` | フォントサイズは調和数列スケール。固定値は避ける |
253
- | `letter-spacing: 0.02 / 0.12 / 0.14 / 0.18 / 0.2 / 0.24em` を散在 | `--lts--s/-l` を使う、または独自の `--lts--*` を `global.css` で追加 | デフォルトの `lts` トークンは `s/l` のみ。多種混在はデザイントークンとして不健全 |
254
-
255
- ### 直書きしてよい例外
256
-
257
- - 1px / -1px の罫線・視覚補正(border / margin の打ち消し)
258
- - transform / vertical-align 等の微調整値(数 px 単位)
259
- - `media query` / `@container` の閾値など、ブラウザ仕様上 px 必須の値
260
-
261
- ---
262
-
263
- ## Property Class で書けるのに CSS で書く
264
-
265
- `c--*` を定義したくなったら、まず宣言ごとに Property Class へ落とせるか確認する。落とせる宣言を CSS に書くと、CSS が肥大化し、Property Class の利点(差分上書きの容易さ・読みやすさ)が失われる。
266
-
267
- | NG(CSS 直書き) | OK(Property Class) |
268
- |---|---|
269
- | `.c--tag { font-size: var(--fz--xs); padding: var(--s10); background: var(--base-2); border-radius: var(--bdrs--10); }` | `<span class="c--tag -fz:xs -p:10 -bgc:base-2 -bdrs:10">` |
270
- | `.c--eyebrow { font-size: var(--fz--2xs); color: var(--text-2); text-transform: uppercase; }` | `<span class="c--eyebrow -fz:2xs -c:text-2 -tt:uppercase">` |
271
-
272
-
273
- CSS に残すのは、基本的には `::before` / `> li` などの「Primitive / Trait / Property Class で書けないセレクタ」を伴う宣言。単一要素への装飾束は呼び出し側マークアップに移す。
274
-
275
- なお、**CSS が空になっても `c--*` クラス名はマークアップに残して構わない**(むしろ推奨)。コンポーネントとしての役割をソースから読み取りやすくする目的で、意味づけ用に付けたままにする。
276
-
277
-
278
- ---
279
-
280
- ## `is--` の誤用(状態・バリエーション)
281
-
282
- Lism CSS の `is--` プレフィックスは「**〜である**」という**役割・存在の宣言**を表す trait 用(`is--container` / `is--wrapper` / `is--layer` / `is--boxLink` / `is--coverLink` / `is--skipFlow` / `is--side` 等)。ユーザーが独自に `is--*` を追加することは可能だが、**その要素の役割(trait)を宣言するもの**であることが条件で、**状態管理やスタイルバリエーション目的に流用しない**(`is--active` / `is--current` / `is--solid` などは誤用)。
283
-
284
- → 詳細: [trait-class.md](./trait-class.md#is-trait役割宣言)
285
-
286
- `is--` と紛れがちな 2 つの用途は、Lism では別の手段で表現する:
287
-
288
- ### 1. 状態管理 → `data-*` 属性を使う
289
-
290
- オン/オフが切り替わる状態(active / current / disabled / open / selected 等)は、`is--*` クラスを増やさず HTML の `data-*` 属性で表現する。CSS は属性セレクタで書く。
291
-
292
- | NG | OK |
293
- |---|---|
294
- | `<a class="c--catTab is--active">` + `.c--catTab.is--active { ... }` | `<a class="c--catTab" data-is-active>` + `.c--catTab[data-is-active] { ... }` |
295
- | `<li class="c--pager_num is--current">` + `.c--pager_num.is--current { ... }` | `<li class="c--pager_num" aria-current="page">` + `.c--pager_num[aria-current] { ... }` |
296
- | `<a class="c--pager_nav is--disabled">` + `.c--pager_nav.is--disabled { ... }` | `<a class="c--pager_nav" data-is-disabled>` + `.c--pager_nav[data-is-disabled] { ... }` |
297
-
298
- 理由:
299
-
300
- - `is--*` は「役割宣言」用の trait であり、状態を表すクラスを `is--*` として増やすと意味体系(trait か state か)が混在して読みにくくなる
301
- - `data-*` は HTML 標準の状態表現で、JS からの切替(`element.dataset.isActive = ''` / `delete element.dataset.isActive`)も自然
302
- - ARIA 属性で意味が表せる場合(`aria-current` / `aria-disabled` / `aria-selected` 等)は ARIA を優先し、その属性自体を CSS セレクタにする
303
-
304
- ### 2. スタイルバリエーション → BEM Modifier `c--{name}--{variant}`
305
-
306
- 「同じコンポーネントの見た目違い」は、Lism CSS 公式の BEM Modifier 記法で表現する(→ [css-rules.md の Component Class](./css-rules.md#component-classc--))。
307
-
308
- | NG | OK |
309
- |---|---|
310
- | `<span class="c--tag is--solid">` + `.c--tag.is--solid { ... }` | `<span class="c--tag c--tag--solid">` + `.c--tag.c--tag--solid { ... }` |
311
- | `<button class="c--button is--outline">` | `<button class="c--button c--button--outline">` |
312
-
313
- なお、Modifier であってもまずは [Property Class で表現できないか](#property-class-で書けるのに-css-で書く) を検討すること。「色だけ違う」程度ならマークアップ側で `-bgc:* -c:*` を差し替えるだけで済むことも多い。
314
-
315
- ---
316
-
317
- ## `--keycolor` の誤用
318
-
319
- `--keycolor` は要素単位で「軸となる色」を切り替えるための**ローカル変数**。サイト全体のブランドカラーやリンクカラーには使わない。
320
-
321
- ### `:root` でのグローバル上書き
322
-
323
- | NG | OK | 理由 |
324
- |---|---|---|
325
- | `:root { --keycolor: #c8553d; }` | `:root { --brand: #c8553d; }`(または `--accent` / `--link`) | サイト共通の色は `--brand` / `--accent` / `--link` などのセマンティックカラーで定義する |
326
-
327
- ### アクセントカラーとしての `keycolor` 参照
328
-
329
- | NG | OK | 理由 |
330
- |---|---|---|
331
- | `<Link c="keycolor">` | `<Link c="brand">` または `<Link c="link">` | リンク・hover などの恒常的なアクセントは `brand` / `link` を使う |
332
- | `hov={{ c: 'keycolor' }}` | `hov={{ c: 'brand' }}` | 同上 |
333
- | `border-inline-start: 3px solid var(--keycolor)`(CSS 直書き) | `border-inline-start: 3px solid var(--brand)` | 同上 |
334
-
335
- ### `--keycolor` を使うべき場面
336
-
337
- 「**そのボックス/コンポーネント自身の軸色**」を切り替えたい時のみ:
338
-
339
- ```html
340
- <!-- u--cbox や c--callout など、ボックス全体の色味を局所的に切り替える -->
341
- <div class="u--cbox" style="--keycolor: var(--red)">
342
- <p class="-c" style="--c: var(--keycolor)">danger 用カラーリング</p>
343
- </div>
344
- ```
345
-
346
- ```jsx
347
- <Lism class="u--cbox" keycolor="var(--red)">
348
- <Text c="keycolor">...</Text>
349
- </Lism>
350
- ```
351
-
352
- 詳細: [tokens.md のキーカラー変数セクション](./tokens.md#キーカラー変数-keycolor)
353
-
354
- ---
355
-
356
246
  ## Prop 型ミス
357
247
 
358
248
  ### Heading の `level` は文字列
@@ -49,7 +49,8 @@ Reset CSS に加え、`@layer lism-base` 内で HTML タグに基本スタイル
49
49
  | `--lts--base` | ベース字間 |
50
50
  | `--text` | テキスト色 |
51
51
  | `--base` | 背景色 |
52
- | `--under-offset` | `text-underline-offset`(デフォルト: `0.125em`) |
52
+
53
+ 加えて `text-underline-offset: 0.125em`(リンク下線位置)と `tab-size: 4`(タブ文字の表示幅)が直接指定されている。
53
54
 
54
55
  ### 見出し(h1〜h6)
55
56
 
@@ -73,22 +74,15 @@ class を持たない `ul` / `ol` のみブラウザ標準スタイルが自動
73
74
 
74
75
  | 変数 | フォールバック | 用途 |
75
76
  |------|------------|------|
76
- | `--list-px-s` | `1.75em` | リストの `padding-inline-start` |
77
+ | `--list-ps` | `1.75em` | リストの `padding-inline-start` |
77
78
 
78
- ### テーブル(table, td, th)
79
+ ### テーブル(td, th)
79
80
 
80
81
  | 変数 | フォールバック | 用途 |
81
82
  |------|------------|------|
82
- | `--td-c` | `inherit` | セルのテキスト色 |
83
- | `--td-bgc` | `transparent` | セルの背景色 |
84
- | `--td-p` | `var(--s10) var(--s15)` | セルのパディング |
85
- | `--td-min-sz` | `initial` | セルの最小幅 |
86
- | `--th-c` | `var(--td-c)` | 見出しセルのテキスト色 |
87
- | `--th-bgc` | `var(--td-bgc)` | 見出しセルの背景色 |
88
- | `--th-p` | `var(--td-p)` | 見出しセルのパディング |
89
- | `--th-min-sz` | `var(--td-min-sz)` | 見出しセルの最小幅 |
83
+ | `--cells-p` | `0.625em 0.875em` | セルのパディング |
90
84
 
91
- `th` `td` の変数をフォールバックとして参照するため、`--td-*` だけで両方に反映される。
85
+ `td` `th` の両方に `--cells-p` が適用される。色や最小幅などのカスタマイズは必要な要素にスタイルを直接当てる。
92
86
 
93
87
  ### フォーム要素
94
88
 
@@ -96,8 +90,9 @@ class を持たない `ul` / `ol` のみブラウザ標準スタイルが自動
96
90
  |------|------------|------|
97
91
  | `--controls-bgc` | `var(--base-2)` | 背景色 |
98
92
  | `--controls-bdc` | `var(--divider)` | ボーダー色 |
99
- | `--controls-p` | `var(--s5) var(--s10)` | パディング |
100
- | `--controls-bdrs` | `var(--bdrs--10)` | 角丸 |
93
+ | `--controls-p` | `0.25em 0.5em` | パディング |
94
+
95
+ 角丸はブラウザのデフォルトに委ねている。テーマで丸めたい場合は各セレクタに `border-radius` を直接指定する。
101
96
 
102
97
  ### その他
103
98
 
@@ -53,7 +53,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
53
53
  | `as` | レンダリングする HTML 要素または外部コンポーネントを指定(デフォルト: `"div"`) | `as="section"`, `as={Image}` |
54
54
  | `layout` | レイアウトプリミティブ(`l--{layout}`)を指定 | `layout="flow"` |
55
55
  | `atomic` | アトミックプリミティブ(`a--{atomic}`)を指定。`'divider'` / `'spacer'` / `'decorator'` が利用可能(`'icon'` は内部用) | `atomic="divider"` |
56
- | `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="plain"`, `set="var:hov var:bxsh"`, `set="-plain"` |
56
+ | `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="plain"`, `set="hov bxsh"`, `set="-plain"` |
57
57
  | `util` | ユーティリティクラス(`u--{value}`)を指定。`set` と同様に複数指定・`-` prefix 除外が可能 | `util="cbox"`, `util="cbox trim"`, `util="-trim"` |
58
58
  | `exProps` | Lism Propsの処理をスキップして外部コンポーネントに直接渡すpropsオブジェクト | `exProps={{ size: '1em' }}` |
59
59
 
@@ -79,12 +79,12 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
79
79
  // → p, fz は Lism が処理、size は HogeIcon に直接渡される
80
80
 
81
81
  // set でセットクラスを付与(layout と同じ要領)
82
- <Box set="var:bxsh" p="30">...</Box>
83
- // → <div class="l--box set--var:bxsh -p:30">...</div>
82
+ <Box set="bxsh" p="30">...</Box>
83
+ // → <div class="l--box set--bxsh -p:30">...</div>
84
84
 
85
85
  // set を複数指定(スペース区切り)
86
- <Stack set="var:bxsh var:hov" p="30">...</Stack>
87
- // → <div class="l--stack set--var:bxsh set--var:hov -p:30">...</div>
86
+ <Stack set="bxsh hov" p="30">...</Stack>
87
+ // → <div class="l--stack set--bxsh set--hov -p:30">...</div>
88
88
 
89
89
  // `-` prefix で除外(コンポーネント内部で適用済みの set を打ち消す用途)
90
90
  <AccordionButton set="-plain">...</AccordionButton>
@@ -180,7 +180,7 @@ Trait クラス(`is--*` / `has--*`)を出力するためのプロパティ
180
180
  | Prop | 出力クラス |
181
181
  |------|-----------|
182
182
  | `isWrapper` | `is--wrapper` |
183
- | `isWrapper="{s\|l}"` | `is--wrapper` + `-contentSize:{s\|l}` |
183
+ | `isWrapper="{s\|m\|l\|xl}"` | `is--wrapper` + `-contentSize:{s\|m\|l\|xl}` |
184
184
  | `isWrapper="{value}"` | `is--wrapper` + `-contentSize` + `--contentSize:{value}` |
185
185
  | `isLayer` | `is--layer` |
186
186
  | `isBoxLink` | `is--boxLink` |
@@ -211,7 +211,7 @@ Trait クラス(`is--*` / `has--*`)を出力するためのプロパティ
211
211
  |-------------|-------------|---------|
212
212
  | `<Text>` | `<p>` | `p`, `div`, `blockquote`, `address`, `figcaption`, `pre` |
213
213
  | `<Heading>` | `<h2>` | `h1`〜`h6`(`level` prop で指定) |
214
- | `<Inline>` | `<span>` | `span`, `em`, `strong`, `small`, `code`, `time`, `i`, `b`, `mark`, `abbr`, `cite`, `kbd` |
214
+ | `<Inline>` | `<span>` | `span`, `em`, `strong`, `small`, `code`, `time`, `i`, `b`, `mark`, `abbr`, `cite`, `kbd`, `label` |
215
215
  | `<Group>` | `<div>` | `div`, `section`, `article`, `figure`, `nav`, `aside`, `header`, `footer`, `main`, `fieldset`, `hgroup` |
216
216
  | `<List>` | `<ul>` | `ul`, `ol`, `dl` |
217
217
  | `<Link>` | `<a>`(固定) | — |
@@ -6,6 +6,7 @@
6
6
  - [プレフィックスとクラス分類](#プレフィックスとクラス分類)
7
7
  - [Component Class(`c--`)](#component-classc--)
8
8
  - [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
9
+ - [独自プレフィックス](#独自プレフィックス)
9
10
  - [CSS の配置場所](#css-の配置場所)
10
11
 
11
12
  [詳細](https://lism-css.com/docs/css-methodology.md)
@@ -42,13 +43,13 @@ Lism CSSで定義されるクラスは、その役割とレイヤーの所属が
42
43
 
43
44
  | 分類 | 役割 | プレフィックス | 例 |
44
45
  |---|---|---|---|
45
- | Set Class | ベーススタイル上書き・変数提供 | `set--` | `set--plain`, `set--revert`, `set--var:hov`, `set--var:bxsh` |
46
+ | Set Class | ベーススタイル上書き・変数提供 | `set--` | `set--plain`, `set--revert`, `set--hov`, `set--bxsh` |
46
47
  | Layout Primitive | レイアウトの構成単位となる Primitive | `l--` | `l--grid`, `l--flex`, `l--stack` |
47
48
  | Atomic Primitive | レイアウトの最小単位となる Primitive | `a--` | `a--icon`, `a--divider` |
48
49
  | Component Class | BEM 構造を持つ UI 部品 | `c--` | `c--button`, `c--accordion` |
49
50
  | `is--` Trait | 要素に役割(〜である)を宣言 | `is--` | `is--container`, `is--wrapper`, `is--layer`, `is--boxLink` |
50
51
  | `has--` Trait | 要素に機能(〜を持つ)を付与 | `has--` | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
51
- | Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `u--cbox`, `u--trim`, `u--divide`, `u--cells` |
52
+ | Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `u--cbox`, `u--trim`, `u--divide`, `u--enclose` |
52
53
  | Property Class | 単一プロパティの制御 | `-` | `-fz:l`, `-p:20`, `-d:none` |
53
54
 
54
55
  **併用ルール:**
@@ -82,7 +83,7 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
82
83
  | 2 | Component(`c--`) | `c--box`, `c--box--primary` |
83
84
  | 3 | Atomic Primitive(`a--`) | `a--icon`, `a--divider` |
84
85
  | 4 | Layout Primitive(`l--`) | `l--flex`, `l--columns` |
85
- | 5 | Set Class(`set--`) | `set--var:hov`, `set--var:bxsh` |
86
+ | 5 | Set Class(`set--`) | `set--hov`, `set--bxsh` |
86
87
  | 6 | Trait Class 役割宣言(`is--`) | `is--wrapper`, `is--layer` |
87
88
  | 7 | Trait Class 機能付与(`has--`) | `has--transition`, `has--gutter` |
88
89
  | 8 | Utility Class(`u--`) | `u--cbox`, `u--trim` |
@@ -207,6 +208,27 @@ export default function MyCard(props) {
207
208
  ```
208
209
 
209
210
 
211
+ ### 独自プレフィックス
212
+
213
+ Lism CSS の既存プレフィックス(`set--` / `is--` / `has--` / `l--` / `a--` / `c--` / `u--` / `-`)のどれにも該当しないクラスは、独自プレフィックスを付けても、プレフィックスなしで命名しても構いません。
214
+
215
+ 代表的な例:
216
+
217
+ | 分類 | 形式 | 例 |
218
+ |---|---|---|
219
+ | ゾーニング(サイトの大まかな領域) | `z--{zoneName}` または `{zoneName}` | `z--header`, `z--main`, `z--sidebar`, `z--footer` |
220
+ | ページ分類 | `p--{type}-{id\|slug}` または `{slug}Page` | `p--front`, `p--page--{slug}` |
221
+
222
+ これらは、特に理由がなければ `@layer lism-custom` に配置することを推奨します。
223
+
224
+ ```css
225
+ @layer lism-custom {
226
+ .z--header { /* ... */ }
227
+ .p--front { /* ... */ }
228
+ }
229
+ ```
230
+
231
+
210
232
  ## CSS の配置場所
211
233
 
212
234
  ### グローバル CSS(サイト全体)
@@ -70,10 +70,10 @@
70
70
 
71
71
  | プレフィックス | 責務 | 代表例 |
72
72
  |---|---|---|
73
- | `set--` | HTML 要素の基礎スタイリング / 変数セット | `set--plain`, `set--revert`, `set--var:hov`, `set--var:bxsh` |
73
+ | `set--` | HTML 要素の基礎スタイリング / 変数セット | `set--plain`, `set--revert`, `set--hov`, `set--bxsh` |
74
74
  | `is--` | 〜である(役割・存在の宣言)。CSS 変数は必須ではない | `is--container`, `is--wrapper`, `is--layer` |
75
75
  | `has--` | 〜を持つ(単一機能 trait の付与)。CSS 変数でカスタマイズ可 | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
76
- | `u--` | 装飾的効果(単独 or 子要素の装飾) | `u--trim`, `u--cbox`, `u--divide`, `u--cells` |
76
+ | `u--` | 装飾的効果(単独 or 子要素の装飾) | `u--trim`, `u--cbox`, `u--divide`, `u--enclose` |
77
77
 
78
78
  - `set--` は `lism-base` 層で HTML 要素の基礎スタイル・変数を提供するもの。
79
79
  - `is--` / `has--` は `lism-trait` 層に属する。
@@ -127,14 +127,17 @@ Emmet と異なるのは `o` (`opacity`) のみ。
127
127
 
128
128
  #### 方向指定系: 「グループ略称」 + `-` +「方向指定」
129
129
 
130
+ `inline-start`/`inline-end`は`is`/`ie`ではなく、すでに普及しているCSSフレームワークの慣習に沿って`s`/`e`とする。
131
+
130
132
  | 方向 | サフィックス | 例 |
131
133
  |------|-----------|-----|
132
134
  | physical | `-t` / `-b` / `-l` / `-r` | `bd-t`, `bd-b`, `bd-l`, `bd-r` |
133
135
  | inline / block | `-x` / `-y` | `bd-x`, `bd-y` |
134
- | start / end | `-s` / `-e` | `bd-x-s`, `bd-x-e`, `bd-y-s`, `bd-y-e` |
136
+ | inline-start / end | `-s` / `-e` | `bd-s`, `bd-e`, `ps`, `pe`, `ms`, `me`, `i-s`, `i-e` |
137
+ | block-start / end | `-bs` / `-be` | `bd-bs`, `bd-be`, `pbs`, `pbe`, `mbs`, `mbe`, `i-bs`, `i-be` |
135
138
  | x / y | `-x` / `-y` | `ov-x`, `ov-y` |
136
139
 
137
- 例外: `p`, `m` のみ最初のハイフンを省略 → `pt`, `px`, `my`, `mx-s` 等。
140
+ 例外: `p`, `m` のみハイフンを省略 → `pt`, `px`, `my`, `ms` 等。
138
141
 
139
142
  #### グループ略称の衝突禁止
140
143
 
@@ -81,10 +81,10 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
81
81
  ##### 2. カラム幅が指定値を下回ったら自動で折り返したい
82
82
 
83
83
  - **推奨**: `l--autoColumns` (`<AutoColumns cols="20rem" />`)
84
- - **理由**: BP に依存せず、カラム最小幅基準で `auto-fit` / `auto-fill` の挙動を簡潔に書ける
84
+ - **理由**: BP に依存せず、カラム最小幅基準で `auto-fill` / `auto-fit` の挙動を簡潔に書ける
85
85
  - **典型例**: カード一覧、商品リスト、ロゴ並び等
86
86
  - **代替**:
87
- - `l--grid`: `gtc="repeat(auto-fit, minmax(20rem, 1fr))"` を直書きできるが冗長
87
+ - `l--grid`: `gtc="repeat(auto-fill, minmax(20rem, 1fr))"` を直書きできるが冗長
88
88
 
89
89
  ##### 3. 「横並び」と「縦 1 列」を一括で切り替えたい(多段階の列数変化が不要)
90
90
 
@@ -23,16 +23,16 @@
23
23
  ```jsx
24
24
  <Box p="30" pos="relative">
25
25
  <p>本文テキスト...</p>
26
- <Decorator size="1.25em" pos="absolute" t="0" l="0" bd-x-s bd-y-s bdc="current" />
27
- <Decorator size="1.25em" pos="absolute" r="0" b="0" bd-x-e bd-y-e bdc="current" />
26
+ <Decorator size="1.25em" pos="absolute" t="0" l="0" bd-s bd-bs bdc="current" />
27
+ <Decorator size="1.25em" pos="absolute" r="0" b="0" bd-e bd-be bdc="current" />
28
28
  </Box>
29
29
  ```
30
30
 
31
31
  ```html
32
32
  <div class="l--box -p:30 -pos:relative">
33
33
  <p>本文テキスト...</p>
34
- <div class="a--decorator -pos:absolute -t:0 -l:0 -bd-x-s -bd-y-s -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
35
- <div class="a--decorator -pos:absolute -r:0 -b:0 -bd-x-e -bd-y-e -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
34
+ <div class="a--decorator -pos:absolute -t:0 -l:0 -bd-s -bd-bs -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
35
+ <div class="a--decorator -pos:absolute -r:0 -b:0 -bd-e -bd-be -bdc:current -ar:1/1 -w" style="--w:1.25em" aria-hidden="true"></div>
36
36
  </div>
37
37
  ```
38
38
 
@@ -1,6 +1,6 @@
1
1
  # l--autoColumns / `<AutoColumns>`
2
2
 
3
- カラム要素が指定した幅より小さくならないように自動で折り返す、**ブレイクポイント非依存の段組みクラス**。`auto-fit` / `auto-fill` を使った流動カラムを簡潔に記述できます。
3
+ カラム要素が指定した幅より小さくならないように自動で折り返す、**ブレイクポイント非依存の段組みクラス**。`auto-fill` / `auto-fit` を使った流動カラムを簡潔に記述できます。
4
4
 
5
5
  ## 基本情報
6
6
 
@@ -14,7 +14,7 @@
14
14
  | Prop | CSS変数 | デフォルト | 説明 |
15
15
  |------|--------|-----------|------|
16
16
  | `cols` | `--cols` | `20rem` | カラムが維持する最小幅を指定(`16em`, `320px` など) |
17
- | `autoFill` | `--autoMode` | `auto-fit` | `auto-fill` モードに切り替え |
17
+ | `autoFit` | `--autoMode` | `auto-fill` | `auto-fit` モードに切り替え |
18
18
 
19
19
  ## Usage
20
20
 
@@ -38,27 +38,27 @@
38
38
  </div>
39
39
  ```
40
40
 
41
- ### `auto-fill`を使用する
41
+ ### `auto-fit`を使用する
42
42
 
43
- `l--autoColumns` では、`grid-template-columns` の `repeat()` 関数の第一引数を `--autoMode` で指定できます(デフォルトは `auto-fit`)。`--autoMode:auto-fill`(`autoFill`)を指定することで、要素数が少ない時の挙動が変わります。
43
+ `l--autoColumns` では、`grid-template-columns` の `repeat()` 関数の第一引数を `--autoMode` で指定できます(デフォルトは `auto-fill`)。`--autoMode:auto-fit`(`autoFit`)を指定することで、要素数が少ない時の挙動が変わります。
44
44
 
45
45
  ```jsx
46
- <AutoColumns cols="12em" autoFill g="20" fz="s">
46
+ <AutoColumns cols="12em" g="20" fz="s">
47
47
  <Lism as="div" p="20" bd>auto-fill</Lism>
48
48
  <Lism as="div" p="20" bd>auto-fill</Lism>
49
49
  </AutoColumns>
50
- <AutoColumns cols="12em" g="20" fz="s">
50
+ <AutoColumns cols="12em" autoFit g="20" fz="s">
51
51
  <Lism as="div" p="20" bd>auto-fit</Lism>
52
52
  <Lism as="div" p="20" bd>auto-fit</Lism>
53
53
  </AutoColumns>
54
54
  ```
55
55
 
56
56
  ```html
57
- <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em; --autoMode:auto-fill">
57
+ <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em">
58
58
  <div class="-p:20 -bd">auto-fill</div>
59
59
  <div class="-p:20 -bd">auto-fill</div>
60
60
  </div>
61
- <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em">
61
+ <div class="l--autoColumns -g:20 -fz:s" style="--cols:12em; --autoMode:auto-fit">
62
62
  <div class="-p:20 -bd">auto-fit</div>
63
63
  <div class="-p:20 -bd">auto-fit</div>
64
64
  </div>
@@ -56,14 +56,14 @@ Property Class や Lism Props で Flex 関連プロパティ(`g`, `fxw`, `jc`,
56
56
  ```jsx
57
57
  <Flex g="20">
58
58
  <Lism fx="1">Flex Content</Lism>
59
- <Lism fxb={['33%', '25%']}>Flex Content</Lism>
59
+ <Lism fxb={['50%', null, '25%']}>Flex Content</Lism>
60
60
  </Flex>
61
61
  ```
62
62
 
63
63
  ```html
64
64
  <div class="l--flex -g:20">
65
65
  <div class="-fx:1">Flex Content</div>
66
- <div class="-fxb -fxb_sm" style="--fxb:33%;--fxb_sm:25%">Flex Content</div>
66
+ <div class="-fxb -fxb_md" style="--fxb:50%;--fxb_md:25%">Flex Content</div>
67
67
  </div>
68
68
  ```
69
69
 
@@ -15,10 +15,12 @@
15
15
 
16
16
  | クラス | 余白量 |
17
17
  |--------|-------|
18
- | `l--flow` | `--flow--base`(`--s30`) |
18
+ | `l--flow` | `--flow--base`(`--s30`、`lang="ja"` 時は `--s35`) |
19
19
  | `.l--flow.-flow:s` | `--flow--s`(`--s20`) |
20
20
  | `.l--flow.-flow:` | `--flow` を直接指定した値 |
21
21
 
22
+ `--flow--base` / `--flow--s` は `:root` で定義されたトークン([tokens](../tokens.md#フロー余白-flow) 参照)。日本語環境では文字密度に合わせて `--flow--base` が広めに上書きされる。
23
+
22
24
  ## 専用Props
23
25
 
24
26
  | Prop | 説明 |
@@ -126,7 +128,7 @@
126
128
  </Flow>
127
129
  ```
128
130
 
129
- またネストされた `l--flow` は、`--flow` が未定義の場合 `--flow--base` ではなく**親の値を継承**することにも注意してください。
131
+ またネストされた `l--flow` は、`--flow` が未定義の場合、ルートで定義された `--flow--base` ではなく**親の `--flow` を継承**することにも注意してください。
130
132
 
131
133
  ## 関連プリミティブ
132
134
 
@@ -36,16 +36,16 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
36
36
  | `bd` | `border`(変数管理を有効化) |
37
37
  | `bd-x` | `border-inline` |
38
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` |
39
+ | `bd-s` | `border-inline-start` |
40
+ | `bd-e` | `border-inline-end` |
41
+ | `bd-bs` | `border-block-start` |
42
+ | `bd-be` | `border-block-end` |
43
43
  | `bd-t` | `border-top` |
44
44
  | `bd-b` | `border-bottom` |
45
45
  | `bd-l` | `border-left` |
46
46
  | `bd-r` | `border-right` |
47
47
 
48
- 標準で用意しているのは物理方向(`-t` / `-b` / `-l` / `-r`)と論理方向(`-x` / `-y` / `-x-s` / `-x-e` / `-y-s` / `-y-e`)のみ。
48
+ 標準で用意しているのは物理方向(`-t` / `-b` / `-l` / `-r`)と論理方向(`-x` / `-y` / `-s` / `-e` / `-bs` / `-be`)のみ。
49
49
 
50
50
  ## 値プロパティ
51
51
 
@@ -76,12 +76,12 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
76
76
  ```jsx
77
77
  <Box bd-t px="10">-t: Top</Box>
78
78
  <Box bd-x bdw="2px" px="10">inline</Box>
79
- <Box bd-x-s bdw="2px" px="10">inline-start</Box>
79
+ <Box bd-s bdw="2px" px="10">inline-start</Box>
80
80
  ```
81
81
  ```html
82
82
  <div class="l--box -bd-t -px:10">-t: Top</div>
83
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>
84
+ <div class="l--box -bd-s -px:10" style="--bdw: 2px">inline-start</div>
85
85
  ```
86
86
 
87
87
  ### 方向ごとに異なるスタイル
@@ -112,12 +112,12 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
112
112
 
113
113
  ### BP でボーダー方向を切り替える
114
114
 
115
- `bd-x-s` + `bd-y-s` に `bdw` の複数値を BP で差し替えると、「縦並び時は上下線・横並び時は左右線」のように方向を切り替えられる。
115
+ `bd-s` + `bd-bs` に `bdw` の複数値を BP で差し替えると、「縦並び時は上下線・横並び時は左右線」のように方向を切り替えられる。
116
116
 
117
117
  ```jsx
118
118
  <Flex fxd={['column', 'row']}>
119
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>
120
+ <Box px="15" py="5" bd-s bd-bs bdw={['1px 0', '0 1px']}>Box</Box>
121
121
  </Flex>
122
122
  ```
123
123
 
@@ -1,6 +1,6 @@
1
1
  # -hov(ホバー)
2
2
 
3
- hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで動作する系と、親の `set--var:hov` に連動する系の 2 系統に分かれる。
3
+ hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで動作する系と、親の `set--hov` に連動する系の 2 系統に分かれる。
4
4
 
5
5
  ## 基本情報
6
6
 
@@ -15,10 +15,10 @@ hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで
15
15
  |------|------|
16
16
  | `-hov:-{prop}` | `--hov-{prop}` 変数を受け取り、hover 時に該当プロパティを変化させる |
17
17
  | `-hov:{preset}` | hover 時のスタイルセットをプリセット名でまとめて適用する |
18
- | `-hov:in:{preset}` | 親要素の `set--var:hov` を起点に、子要素のスタイルを変化させる |
18
+ | `-hov:in:{preset}` | 親要素の `set--hov` を起点に、子要素のスタイルを変化させる |
19
19
 
20
20
  `-hov:-{prop}` と `-hov:{preset}` は `@media (any-hover: hover)` 内で定義されるため、タッチデバイスでは無効。
21
- `-hov:in:*` はメディアクエリ外で、親の `set--var:hov` がセットする `--_isHov` / `--_notHov` 変数で動作する。
21
+ `-hov:in:*` はメディアクエリ外で、親の `set--hov` がセットする `--_isHov` / `--_notHov` 変数で動作する。
22
22
 
23
23
  トランジションを付けたい場合は [`has--transition`](../trait-class/has--transition.md) クラスを併用する。
24
24
 
@@ -30,12 +30,16 @@ hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで
30
30
  |--------|----------------------|--------|
31
31
  | `-hov:-c` | `color` | `var(--hov-c, var(--link))` |
32
32
  | `-hov:-bdc` | `border-color` | `var(--hov-bdc, currentColor)` |
33
- | `-hov:-bgc` | `background-color` | `var(--hov-bgc, var(--base-2))` |
33
+ | `-hov:-bgc` | `background-color` | `var(--hov-bgc, var(--hov-bgc--default, color-mix(in srgb, var(--bgc, var(--base)), var(--neutral) 25%)))` |
34
34
  | `-hov:-o` | `opacity` | `var(--hov-o, var(--o--p))` |
35
35
  | `-hov:-bxsh` | `box-shadow` | `var(--hov-bxsh, var(--bxsh--50))` |
36
36
 
37
37
  任意の値へ変化させたい場合は、`--hov-{prop}` 変数で値を指定する。
38
38
 
39
+ `-hov:-bgc` は初期値として、現在の背景色を `--neutral` へブレンドした背景色を使う。ライト/ダークどちらの背景でも使いやすいhover背景にしたい場合は、`hov="-bgc"` を基本形として使う。
40
+
41
+ プロジェクト全体で `-hov:-bgc` のデフォルト値を差し替えたい場合は、`:root` 等で `--hov-bgc--default` を定義する。フォールバック順は `--hov-bgc`(要素ごとの明示指定)→ `--hov-bgc--default`(プロジェクト全体)→ `color-mix(...)`(フレームワーク既定)の 3 段。
42
+
39
43
  ```html
40
44
  <!-- 初期値のまま使用 -->
41
45
  <a class="is--boxLink -hov:-o -bgc:base-2 -bd -p:20" href="###">...</a>
@@ -52,7 +56,6 @@ hover 時のスタイルセットをプリセット名でまとめて適用す
52
56
  | クラス | 内容 |
53
57
  |--------|------|
54
58
  | `-hov:underline` | テキストに下線を表示 |
55
- | `-hov:neutral` | 背景色にニュートラルグレーをブレンド |
56
59
 
57
60
  プロジェクト固有のプリセットは、以下のように自作して追加できる。
58
61
 
@@ -67,7 +70,7 @@ hover 時のスタイルセットをプリセット名でまとめて適用す
67
70
 
68
71
  ## `-hov:in:{preset}` — 親連動
69
72
 
70
- 親要素に `set--var:hov` を付けると、`--_isHov` / `--_notHov` 変数が hover 状態に応じて切り替わる。`-hov:in:*` はこの変数を参照する仕組み。
73
+ 親要素に `set--hov` を付けると、`--_isHov` / `--_notHov` 変数が hover 状態に応じて切り替わる。`-hov:in:*` はこの変数を参照する仕組み。
71
74
 
72
75
  | クラス | 効果 | 仕組み |
73
76
  |--------|------|--------|
@@ -76,7 +79,7 @@ hover 時のスタイルセットをプリセット名でまとめて適用す
76
79
  | `-hov:in:zoom` | 親 hover 時にズーム | `scale: var(--_isHov, 1.1)` |
77
80
 
78
81
  ```jsx
79
- <Frame set="var:hov" isBoxLink href="#" ar="16/9">
82
+ <Frame set="hov" isBoxLink href="#" ar="16/9">
80
83
  <Media isLayer hasTransition hov="in:zoom" src="..." />
81
84
  <Layer hasTransition hov="in:show" bgc="rgb(0 0 0 / 40%)">...</Layer>
82
85
  </Frame>
@@ -136,5 +139,5 @@ hover 時のスタイルセットをプリセット名でまとめて適用す
136
139
  ## 関連
137
140
 
138
141
  - [`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` と組み合わせる場合の影色再計算
142
+ - [`set--hov`](../set-class.md#set--hov) — 親の hover 状態を子要素に伝播させる仕組み
143
+ - [`set--bxsh`](../set-class.md) — `-hov:-bxsh` と組み合わせる場合の影色再計算