@lism-css/mcp 0.26.0 → 0.28.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.
@@ -29,7 +29,9 @@ import { Button } from '@lism-css/ui/astro/Button';
29
29
  - [Details](#details)
30
30
  - [Modal](#modal)
31
31
  - [NavMenu](#navmenu)
32
+ - [Popover](#popover)
32
33
  - [Tabs](#tabs)
34
+ - [Tooltip](#tooltip)
33
35
  - [ShapeDivider](#shapedivider)
34
36
  - [DummyText](#dummytext)
35
37
  - [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
@@ -89,16 +91,19 @@ import { Button } from '@lism-css/ui/astro/Button';
89
91
 
90
92
  ソース: [Avatar/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Avatar)
91
93
 
92
- アバター(プロフィール画像)コンポーネント。Frame ベースの円形画像表示。`b--avatar` クラスが付与される。
94
+ アバター(プロフィール画像)コンポーネント。円形の画像表示で、`b--avatar` クラスが付与される。`src` ありは `l--frame`、`src` 未指定時は `l--center` に切り替わり、ルートに `b--avatar--initial`(背景色 `--base-2`)が付いて `name` の先頭1文字をイニシャルとして `span` で表示する(画像ロード失敗時の自動切替は無い)。
93
95
 
94
96
  | Prop | 型 | デフォルト | 説明 |
95
97
  | --- | --- | --- | --- |
96
- | `src` | `string` | — | 画像URL |
97
- | `alt` | `string` | — | 代替テキスト |
98
+ | `src` | `string` | — | 画像URL。未指定なら `name` のイニシャルを表示 |
99
+ | `name` | `string` | — | ユーザー名。イニシャルの生成元。`alt` 未指定時は代替テキストにも使う |
100
+ | `alt` | `string` | — | 代替テキスト。指定時は `name` より優先。`alt=''` で装飾扱い(イニシャル表示時は `aria-hidden`) |
98
101
  | `size` | `string` | `'2em'` | アバターのサイズ |
99
102
 
100
103
  ```jsx
101
104
  <Avatar src='/avatar.jpg' alt='User' size='48px' />
105
+ <Avatar name='Yamada Taro' size='48px' /> {/* イニシャル "Y" を表示 */}
106
+ <Avatar name='Yamada Taro' bgc='brand' c='base' /> {/* 背景色はルートの Prop で上書き可 */}
102
107
  ```
103
108
 
104
109
 
@@ -218,7 +223,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
218
223
  | --- | --- | --- | --- | --- |
219
224
  | `hovBgc` | Root | `string` | — | ホバー時の背景カラー。`--hov-bgc` 変数として出力 |
220
225
  | `hovC` | Root | `string` | — | ホバー時のテキストカラー。`--hov-c` 変数として出力 |
221
- | `itemP` | Root | `string` | — | 各アイテムのパディング。`--_item-p` 変数として出力 |
226
+ | `itemP` | Root | `string` | — | 各アイテムのパディング。`--item-p` 変数として出力 |
222
227
  | `href` | Link | `string` | — | リンク先URL(Link は常に `a` 要素として出力) |
223
228
  | `hov` | Link | `string` | `-bgc` | ホバー時のスタイル。デフォルトで背景色が変化 |
224
229
 
@@ -234,6 +239,40 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
234
239
  ```
235
240
 
236
241
 
242
+ ## Popover
243
+
244
+ ソース: [Popover/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Popover)
245
+
246
+ クリックで開くインタラクティブなパネル。ネイティブ Popover API(`popover` 属性)で開閉し、CSS Anchor Positioning でトリガーの隣に配置する。クライアント JS なし。開閉・外側クリック/Esc での light dismiss・フォーカス復帰・`aria-expanded` はブラウザに任せる。Anchor Positioning 非対応ブラウザでは画面中央のカードとして開く。ホバーで出す補足テキストは `Tooltip` を使う。
247
+
248
+ **構造:** `Popover.Root > Popover.Trigger + Popover.Popup > (Content + Popover.Close)`
249
+
250
+ | Prop | 対象 | 型 | デフォルト | 説明 |
251
+ | --- | --- | --- | --- | --- |
252
+ | `popoverId` | Root | `string` | 自動生成 | Trigger の `popovertarget`・Popup の `id`・Close の `popovertarget` に配布する ID。Root 配下では子に ID を指定しない |
253
+ | `popoverId` | Trigger / Close | `string` | — | Root 外で単体利用するときだけ指定(Popup の `id` と揃える) |
254
+ | `offset` | Root | `string` | `var(--s5)` | トリガーとの距離。`--popover-offset` 変数として出力 |
255
+ | `side` | Popup | `'top' \| 'bottom' \| 'start' \| 'end'` | `'bottom'` | 表示位置。`data-side` として出力。`start`/`end` は横方向で、書字方向に追従する inline 軸の論理方向(LTR では `start`=左)。viewport 端で自動反転 |
256
+ | `align` | Popup | `'start' \| 'center' \| 'end'` | `'center'` | トリガーに対する揃え。`data-align` として出力。`side` が `top`/`bottom` のとき書字方向、横方向のとき `start`=上・`end`=下 |
257
+ | `type` | Popup | `'auto' \| 'manual'` | `'auto'` | `popover` 属性の値。`manual` は light dismiss と Esc が無効になるので `Close` を必ず置く |
258
+ | `icon` / `srText` | Close | `string` | `'x'` / `'Close'` | 子要素が無いときのアイコンとスクリーンリーダー向けテキスト |
259
+
260
+ - CSS 変数(`--popover-offset`・`--popover-duration`)は Root(`.b--popover`)で受け取る。Root かその祖先に指定する。Popup に書いても効かない。
261
+ - Trigger / Close は `button` 要素でなければ `popovertarget` が効かない。
262
+ - 色・余白・角丸・影は Lism props(`bgc`・`p`・`bdrs`・`bxsh` 等)で上書きする。開閉フェードの時間は `--popover-duration`。
263
+ - フォームを含む場合は Popup に `role='dialog'` と `aria-label` を付ける。
264
+
265
+ ```jsx
266
+ <Popover.Root>
267
+ <Popover.Trigger>Open</Popover.Trigger>
268
+ <Popover.Popup side='bottom' align='start'>
269
+ Content
270
+ <Popover.Close srText='閉じる' />
271
+ </Popover.Popup>
272
+ </Popover.Root>
273
+ ```
274
+
275
+
237
276
  ## Tabs
238
277
 
239
278
  ソース: [Tabs/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Tabs)
@@ -263,6 +302,35 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
263
302
  ```
264
303
 
265
304
 
305
+ ## Tooltip
306
+
307
+ ソース: [Tooltip/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Tooltip)
308
+
309
+ ホバー / キーボードフォーカスで出る補足テキスト。表示制御は CSS のみで、JS は「Esc で閉じる」だけ(`scripts/tooltip.js`)。CSS Anchor Positioning でトリガーの隣に配置し、非対応ブラウザではトリガー基準の絶対配置にフォールバックする。中にリンク・ボタンを置かない(それは `Popover`)。重要な情報をツールチップだけに入れない(タッチでは見えない)。
310
+
311
+ **構造:** `Tooltip.Root > Tooltip.Trigger + Tooltip.Popup`(Popup は Root 直下に置く)
312
+
313
+ | Prop | 対象 | 型 | デフォルト | 説明 |
314
+ | --- | --- | --- | --- | --- |
315
+ | `tooltipId` | Root | `string` | 自動生成 | Trigger の `aria-describedby` と Popup の `id` に配布する ID。Root 配下では子に ID を指定しない |
316
+ | `tooltipId` | Trigger | `string` | — | Root 外で単体利用するときだけ指定(Popup の `id` と揃える) |
317
+ | `delay` | Root | `string` | `0.4s` | 表示までのディレイ。`--tooltip-delay` 変数として出力(退場猶予は `--tooltip-delay--close`、既定 `0.15s`) |
318
+ | `offset` | Root | `string` | `var(--s5)` | トリガーとの距離。`--tooltip-offset` 変数として出力 |
319
+ | `side` | Popup | `'top' \| 'bottom' \| 'start' \| 'end'` | `'top'` | 表示位置。`data-side` として出力。`start`/`end` は横方向で、書字方向に追従する inline 軸の論理方向(LTR では `start`=左)。viewport 端で自動反転 |
320
+ | `align` | Popup | `'start' \| 'center' \| 'end'` | `'center'` | `side` と直交する方向の揃え。`data-align` として出力。`side` が `top`/`bottom` のとき `start`/`end` は書字方向に追従 |
321
+
322
+ - CSS 変数(`--tooltip-offset`・`--tooltip-delay`・`--tooltip-delay--close`・`--tooltip-duration`)は Root(`.b--tooltip`)で受け取る。Root かその祖先に指定する。Popup に書いても効かない。
323
+ - Trigger の既定は `button`。`as='span'` 等にするなら `tabindex='0'` でフォーカス可能にする。
324
+ - 既定は反転配色(`--text` 背景・`--base` 文字)。色・余白・角丸は Lism props(`bgc`・`c`・`p`・`bdrs` 等)で上書きする。フェード時間は `--tooltip-duration`。
325
+
326
+ ```jsx
327
+ <Tooltip.Root>
328
+ <Tooltip.Trigger>Save</Tooltip.Trigger>
329
+ <Tooltip.Popup side='top'>Shortcut: ⌘S</Tooltip.Popup>
330
+ </Tooltip.Root>
331
+ ```
332
+
333
+
266
334
  ## ShapeDivider
267
335
 
268
336
  ソース: [ShapeDivider/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/ShapeDivider)
@@ -274,8 +342,8 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
274
342
  | `viewBox` | `string` | — | SVG の viewBox |
275
343
  | `level` | `number` | `5` | シェイプの高さレベル。`0` で非表示 |
276
344
  | `flip` | `'X' \| 'Y' \| 'XY'` | — | 反転方向。`data-flip` 属性として出力 |
277
- | `stretch` | `string` | — | 水平方向の引き伸ばし量。`--_inner-stretch` 変数として出力 |
278
- | `offset` | `string` | — | 水平方向のオフセット。`--_inner-offset` 変数として出力 |
345
+ | `stretch` | `string` | — | 水平方向の引き伸ばし量。`--inner-stretch` 変数として出力 |
346
+ | `offset` | `string` | — | 水平方向のオフセット。`--inner-offset` 変数として出力 |
279
347
  | `isEmpty` | `boolean` | — | シェイプを非表示にしてスペーサーとして使用 |
280
348
  | `isAnimation` | `boolean` | — | アニメーションを有効化。`data-has-animation` 属性として出力 |
281
349
 
@@ -37,10 +37,9 @@ Settings(トークン定義)
37
37
 
38
38
  `lism-block` は `lism-trait` / `lism-primitive` より弱い位置にあるため、`b--` のベーススタイルには、明示的に付与したクラス(`is--` / `has--` / `l--` など)が勝ちます。
39
39
 
40
- なお、この優先関係が保証されるのはレイヤーありの標準ビルド(`main.css` / `full.css`)だけです。`main_no_layer.css` / `full_no_layer.css` にはレイヤーがないため、読み込み順と詳細度に依存します。
40
+ なお、レイヤーによるこの優先関係が保証されるのは標準ビルド(`main.css` / `full.css`)だけです。`main_no_layer.css` / `full_no_layer.css` では、Property Class は常に `!important`、`u--` クラスはセレクタ二重化(`.u--trim.u--trim` = 0-2-0)で「Property Class > Utility Class > 単一クラス」の序列だけを再現し、それ以外は読み込み順と詳細度に依存します。
41
41
 
42
- ユーザーが定義する独自クラス・上書きスタイルは、役割に合わせて適切なレイヤーに配置します。
43
- 例えば、トークンやベーススタイルの上書きは `@layer lism-base`、`b--` のベーススタイルは `@layer lism-block`、それ以外の独自クラス(`c--`)は `@layer lism-custom` に置きます。
42
+ 独自クラス・上書きスタイルも対応するレイヤーに置きます。トークン・ベーススタイルの上書きは `@layer lism-base`、`b--` のベーススタイルは `@layer lism-block`、それ以外の独自クラス(`c--`)は `@layer lism-custom`(書き方は「カスタムCSS を追加する場合」)。
44
43
 
45
44
  ## クラス分類とプレフィックス
46
45
 
@@ -57,7 +56,7 @@ Lism CSSで定義されるクラスは、その役割とレイヤーの所属が
57
56
  | Custom Class | Lism 本体に含まれない、ユーザーが自由に定義するカスタムクラス | `c--` | `c--featureList`, `c--header` |
58
57
  | `is--` Trait | 要素に役割(〜である)を宣言 | `is--` | `is--container`, `is--wrapper`, `is--layer`, `is--boxLink` |
59
58
  | `has--` Trait | 要素に機能(〜を持つ)を付与 | `has--` | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
60
- | Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `u--cbox`, `u--trim`, `u--divide`, `u--enclose` |
59
+ | Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `u--cbox`, `u--trim`, `u--trimAll`, `u--clipText` |
61
60
  | Property Class | 単一プロパティの制御 | `-` | `-fz:l`, `-p:20`, `-d:none` |
62
61
 
63
62
  **併用ルール:**
@@ -130,7 +129,7 @@ BEM 構造(本体クラス / Modifier / Element)を持つのは `b--` と `c
130
129
  | Element | `b--{name}_{element}` / `c--{name}_{element}` | `b--card_header`, `c--pricing_body` |
131
130
 
132
131
  - Modifier は本体クラスと併記して使用: `.b--btn.b--btn--outline` / `.c--pricing.c--pricing--featured`
133
- - Element は `_`(アンダースコア)一つ区切り
132
+ - Element は `_`(アンダースコア)一つ区切り。CSS で参照する子要素にだけ付ける([Custom Class(`c--`)](#custom-classc--))
134
133
  - 同じプレフィックスの本体クラス同士の併用(`.b--xxx.b--yyy` / `.c--xxx.c--yyy`)は基本 NG。ただし次は許容される:
135
134
  - 本体クラスと自身の Modifier: `.c--xxx.c--xxx--modifier`
136
135
  - 本体クラスと他の本体クラスの Element: `.c--xxx.c--yyy_elem`
@@ -171,7 +170,7 @@ BEM 構造(本体クラス / Modifier / Element)を持つのは `b--` と `c
171
170
 
172
171
  他のLismクラス(Trait, Primitive, Property Class等)との組み合わせを前提に設計し、CSSへ残すのは、擬似要素・子孫セレクタ・状態セレクタなど、Props/Property Classで表現できないものだけです。(明確な意図があればCSSに一般的なスタイルを書くことも可)
173
172
 
174
- スタイルが全くなく、何のパーツかを示す名前付けのためだけに使っても構いません。
173
+ スタイルが全くなく、何のパーツかを示す名前付けのためだけに使っても構いません。ただし名前付けだけで残すのは本体クラス(`c--{name}`)だけです。Element(`c--{name}_{element}`)は、子孫セレクタ・擬似要素・状態切替など CSS でその子要素を参照する時だけ付けます(NG→OK 例は [antipatterns-layout.md](./antipatterns-layout.md#css-の無い-element-クラスを付ける))。
175
174
 
176
175
  ```html
177
176
  <!-- HTMLで書く場合も、何のパーツかを示す名前 + Primitive + Property Class を優先 -->
@@ -214,9 +213,9 @@ CSSが空になる場合は、CSSファイル側に`.c--myCard {}`を書かず
214
213
  }
215
214
  ```
216
215
 
217
- カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。また、`c--` のクラスでは、`padding`/`border-radius`/`font-size`/`color`などProperty Class/Propsへ移せる宣言を、CSSに書く前にマークアップ側へ移します(NG→OK例は[antipatterns.md](./antipatterns.md#property-class-で書けるのに-css-で書く)を参照)。ただし`b--`のベーススタイルは対象外で、トークンを使って`@layer lism-block`で管理します。
216
+ カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。`c--` でCSSに残す宣言の基準は [Custom Class(`c--`)](#custom-classc--)、`b--` は [Block Class(`b--`)](#block-classb--) を参照。
218
217
 
219
- 明確にその数値に意図があり、トークン化・丸め・Property Class化ができない場合だけ、生のCSS値を例外として使用できます。その場合は実装プランに理由を残します。
218
+ トークン外の生のCSS値は、[antipatterns.md の「直書きしてよい例外」](./antipatterns.md#px--固定値の直書き)に該当する場合だけ使い、実装プランに理由を残します。
220
219
 
221
220
  **レイヤー外に書く場合:**
222
221
  `@layer` の外(レイヤーなし)でカスタムCSSを書くのは、**Property Class(`-{prop}:{value}`)を拡張する場合のみ**としてください。それ以外のカスタムスタイルは必ずいずれかの `@layer` 内に記述します。
@@ -248,13 +247,6 @@ Lism のトークン変数のカスタマイズやベーススタイルの上書
248
247
  コンポーネント固有のスタイルは、そのコンポーネントを定義しているファイルに紐づけます。
249
248
 
250
249
  - `.jsx` / `.tsx` ファイル: CSS ファイルを `import` する
251
- - `.astro` ファイル: `import` するか、コンポーネントファイル内の `<style>` タグに記述
250
+ - `.astro` ファイル: `import` するか、コンポーネントファイル内の `<style>` タグに記述(`<style>` 内でも `@layer` で囲む)
252
251
 
253
- ```css
254
- /* 独自クラスの CSS は lism-custom 内に定義する(b-- のベーススタイルだけ lism-block) */
255
- @layer lism-custom {
256
- .c--yourComponent {
257
- ...
258
- }
259
- }
260
- ```
252
+ 置くレイヤーは「カスタムCSS を追加する場合」と同じです。
@@ -12,8 +12,8 @@
12
12
  詳細(公式ドキュメント):
13
13
 
14
14
  - 概要: [https://lism-css.com/docs/customize/](https://lism-css.com/docs/customize/)
15
- - CSSビルドの選択(`@layer` / `full.css` / `isFullMode`): [https://lism-css.com/docs/customize/build/](https://lism-css.com/docs/customize/build/)
16
- - `lism.config.js`(props / tokens / traits・breakpoints・追加スタイル): [https://lism-css.com/docs/customize/config/](https://lism-css.com/docs/customize/config/)
15
+ - CSSファイルの種類(`@layer` なし版 / `full.css`): [https://lism-css.com/docs/css-files/](https://lism-css.com/docs/css-files/)
16
+ - `lism.config.js`(props / tokens / traits・breakpoints・`isFullMode`・追加スタイル): [https://lism-css.com/docs/customize/config/](https://lism-css.com/docs/customize/config/)
17
17
  - SCSS(`$setting` / `$props`・BP上書き): [https://lism-css.com/docs/customize/scss/](https://lism-css.com/docs/customize/scss/)
18
18
  - CSS Purge: [https://lism-css.com/docs/customize/purge/](https://lism-css.com/docs/customize/purge/)
19
19
 
@@ -22,7 +22,7 @@
22
22
  ## `@layer` をオフにする
23
23
 
24
24
  `lism-css/main.css` の代わりに `lism-css/main_no_layer.css` を読み込むだけで、`@layer` を使わない CSS に切り替えられます。
25
- なお、no-layer版ではレイヤーによる優先度管理(`b--`よりProperty Classが必ず強い等の保証)が効かず、読み込み順・詳細度に依存します。
25
+ no-layer版は既存サイトや WordPress テーマなど、カスケードを制御できない環境向けです。レイヤーの代わりに、Property Class は常に `!important` 付き、`u--trim` / `u--trimAll` / `u--cbox` はセレクタ二重化(`.u--trim.u--trim` = 0-2-0)で出力され、「Property Class > Utility Class > 単一クラス」の序列を再現します。`lism.config.js` の `defaultImportant: false`・`$default_important: 0`・`props` の個別 `important: 0` を指定しても `!important` は外れません。`b--` など上記以外のクラス同士の優先度は読み込み順・詳細度に依存します。
26
26
 
27
27
  ```js
28
28
  // 通常
@@ -48,7 +48,7 @@ import 'lism-css/main_no_layer.css';
48
48
  | --- | --- | --- |
49
49
  | `$breakpoints` | ブレイクポイント数値の定義(`0` は無効=クエリを出力しない) | `('xs': 0, 'sm': '480px', 'md': '800px', 'lg': '1120px', 'xl': 0)` |
50
50
  | `$is_container_query` | コンテナクエリで出力するか(`1` = container query, `0` = media query) | `1` |
51
- | `$default_important` | Property Class にデフォルトで `!important` を付与するか | `0` |
51
+ | `$default_important` | Property Class にデフォルトで `!important` を付与するか(no-layer版では無視され、常に付与) | `0` |
52
52
  | `$props` | Property Class ごとの個別出力設定 | `prop-config` のデフォルト |
53
53
 
54
54
  ### 基本フォーマット
@@ -183,7 +183,7 @@ export default {
183
183
 
184
184
  これだけで、ブレイクポイント対応の全 Property Class が `xs` / `xl` のレスポンシブクラス(`-p_xs` / `-p_xl` 等)も出力するようになります。prop ごとの個別指定は不要です。
185
185
 
186
- 統合プラグイン(型自動生成が有効)を使っている場合、有効化したブレイクポイントを反映した `lism-env.d.ts` がプロジェクト直下に**自動生成**されます。型補完も有効化したブレイクポイントのキーを自動で提示するため、`BreakpointRegistry` をプロジェクト側の `.d.ts` で手書き拡張する必要はありません。`lism-env.d.ts` は git にコミットしてください(`astro check` 等の型チェックがこのファイルを拠り所にします)。
186
+ 統合プラグイン使用時は有効化したブレイクポイントがプロジェクト直下の `lism-env.d.ts` に自動反映され、`BreakpointRegistry` の手書き拡張は不要です。`lism-env.d.ts` は git にコミットしてください(`astro check` 等の型チェックがこのファイルを拠り所にします)。
187
187
 
188
188
  > SCSS を直接利用する構成では、`@use 'lism-css/scss/setting' with ($breakpoints: ...)` で有効化する方法も利用できます([SCSS でのカスタマイズ](#scss-でのカスタマイズ) を参照)。
189
189
 
@@ -257,31 +257,18 @@ export default {
257
257
 
258
258
  ### 追加した prop / trait の型解禁
259
259
 
260
- 統合プラグイン(型自動生成が有効)を使っている場合、`lism.config.js` で追加した **prop / trait も `lism-env.d.ts` 経由で型側に自動解禁**されます(`CustomPropRegistry` / `CustomTraitRegistry` の拡張として出力)。そのため上記の `<Box filter="blur" ... isHoge>` のような新規 prop / trait も、エディタや `astro check` で型エラーになりません。手書きの型拡張は不要です。
260
+ 統合プラグイン使用時は、追加した prop / trait も `lism-env.d.ts`(`CustomPropRegistry` / `CustomTraitRegistry` の拡張)で自動解禁され、手書きの型拡張は不要です。
261
261
 
262
262
  なお、既存 prop への値追加(`ta="justify"` 等)はもともと任意の文字列を受け付けるため、型エラーにはなりません(ただし補完候補には出ません)。
263
263
 
264
264
 
265
265
  ## 追加スタイルを読み込ませる方法
266
266
 
267
- `lism.config.js` で props を増やしただけでは、対応するユーティリティクラスのスタイルが必要になります。構成によって反映方法が異なります。
267
+ `lism.config.js` で props を増やしただけでは、対応するユーティリティクラスのスタイルが必要になります。構成によって反映方法が異なります。`traits` はクラス名だけを追加するため、`is--*` のスタイルはどの構成でも手動追記 / SCSS で用意します。
268
268
 
269
269
  ### Vite / Astro(統合プラグイン使用時)は自動反映(手動ビルド不要)
270
270
 
271
- `@lism-css/plugin` の統合プラグインを登録している場合、`lism.config.js` に props / tokens を追加すると、**dev サーバ / ビルドの CSS に自動反映されます**。追加クラス分の CSS を手動で追記したり `npx lism-css build` を回したりする必要はありません。dev 中に `lism.config.js` を変更すると HMR で CSS が再生成され、型 `.d.ts` も追従します。
272
-
273
- 参照先の **CSS 変数の値そのもの**(`:root { --lts--2xl: .5em }` のような定義)も、`tokens` に値を書けば自動生成されます。値の定義・ユーティリティ生成・props 受理がまとめて反映されるため、`global.css` への手書きは不要です(既定値の上書きも可能)。
274
-
275
- ```js
276
- // lism.config.js — 値そのものも config に集約できる
277
- export default {
278
- tokens: {
279
- lts: { '2xl': '.5em' }, // :root { --lts--2xl: .5em } + .-lts:2xl を自動生成
280
- },
281
- };
282
- ```
283
-
284
- > `is--*` クラスのスタイルは `traits` ではクラス名のみを追加するため、対応するスタイルは別途必要です(後述の手動追記 / SCSS を参照)。
271
+ `@lism-css/plugin` の統合プラグインを登録している場合、`lism.config.js` に props / tokens を追加すると、**dev サーバ / ビルドの CSS に自動反映されます**。手動追記や `npx lism-css build` は不要で、dev 中の変更は HMR で CSS と型 `.d.ts` が追従します。`tokens` に書いた値は CSS 変数の定義(`:root { --lts--2xl: .5em }`)・ユーティリティクラス・props 受理がまとめて反映されるため、`global.css` への手書きも不要です(既定値の上書きも可)。
285
272
 
286
273
  軽微な追加であれば、props を増やさず Lism Props の `:value` 記法(→ [property-class.md](./property-class.md))と `global.css` への手書きだけで済ませることもできます。
287
274
 
@@ -317,8 +304,7 @@ npx lism-css build --full # full.css / full_no_layer.css も生成
317
304
  ```
318
305
 
319
306
  > **注意**:
320
- > - `tokens` に値を書けば、`-lts:2xl` **ユーティリティクラス**と、参照先の CSS 変数(`:root { --lts--2xl: .5em }` のような **値そのもの**)の両方が CLI ビルドでも出力されます。値が `'-'` のキーはカタログ登録のみで `:root` 宣言を出力しません(`lh` のように CSS 変数を持たないものや、実値を手書きSCSS側へ置くもの)。
321
- > - `is--*` クラスのスタイルは自動生成されないため、手動で追加してください。
307
+ > - `tokens` の値は CLI ビルドでも CSS 変数とユーティリティクラスの両方が出力されます。値が `'-'` のキーはカタログ登録のみで `:root` 宣言を出力しません(`flow` `bdrs.inner` のように実値を手書きSCSS側へ置くもの)。
322
308
  > - `lism-css` パッケージ自体を上書きする処理のため、**パッケージ更新ごとに再実行**が必要です。
323
309
 
324
310
  ### 手動で CSS を追記
@@ -337,16 +323,15 @@ CLI を使わず、追加クラス分の CSS をプロジェクト側で書い
337
323
  }
338
324
  ```
339
325
 
340
- ### SCSS で `lism.config.js` と整合させる
326
+ ### SCSS だけで値を追加する(`lism.config.js` を使わない構成)
341
327
 
342
- SCSS 経由で読み込む構成なら、`lism.config.js` と同じ追加分を `$props` の `utilities` 設定として書いておけば、ビルドコマンドなしで反映できます。
328
+ `@lism-css/plugin` を使わない構成では `lism.config.js` は読み込まれない。SCSS `$props` の `utilities` で値を追加し、コンポーネントからは `:value` 記法(`p=":box"`)で強制クラス化するか、HTML に直接クラスを書いて使う。
343
329
 
344
330
  ```scss
345
331
  @use '../path-to/node_modules/lism-css/scss/setting' with (
346
332
  $props: (
347
333
  'ta': ( utilities: ( 'justify': 'justify' ) ),
348
334
  'p': ( utilities: ( 'box': '2em' ) ),
349
- 'filter': ( utilities: ( 'blur': 'blur(3px)' ) ),
350
335
  'lts': ( utilities: ( '2xl': 'var(--lts--2xl)' ) ),
351
336
  )
352
337
  );
@@ -28,12 +28,11 @@
28
28
  | 表記 | 条件 | 例 |
29
29
  | --- | --- | --- |
30
30
  | `s`, `m`, `l`, `xl`... | ベース値を中心に大小の段階を示す | `--fz--s`, `--fz--l` |
31
- | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--lh--base` |
31
+ | `base` | `:root`/`body` の初期値にセットされるもの | `--fz--base`, `--hl--base` |
32
32
  | `10`, `20`, `30`... | `0`(`none`)基準で段階的に増加 | `--bdrs--20`, `--bxsh--30` |
33
33
  | セマンティック名 | 上記に当てはまらない場合 | `--ar--og` |
34
34
 
35
- > 🎵 **例外: opacity トークン**
36
- > opacity(`--o--mp` / `--o--p` / `--o--pp` / `--o--ppp`)は、音楽の強弱記号(piano 系列)に由来するセマンティック命名を採用している。`p`(piano / 弱く)の反復回数が多いほど透明度が増す構造で、「文字の反復回数で段階を表す」命名は Lism 内で opacity のみの例外。
35
+ 例外: opacity トークン(`--o--mp` / `--o--p` / `--o--pp` / `--o--ppp`)は文字の反復回数で段階を表す(由来は [tokens.md](./tokens.md#透明度-o))。
37
36
 
38
37
  ### Property Class 用の変数
39
38
 
@@ -46,10 +45,14 @@
46
45
 
47
46
  | 形式 | 用途 | 例 |
48
47
  | --- | --- | --- |
49
- | `--{target}-{prop}` | 要素・クラスに対するプロパティ(`:root`で上書き可) | `--link-td`, `--headings-ff` |
48
+ | `--{target}-{prop}` | 特定のセレクタを起点に、子要素へ設定するプロパティ | `--link-td`, `--headings-ff`, `--icon-size` |
50
49
  | `--{propName}` | クラス自身の主要機能を制御する変数。要素側で値が初期化され、`:root` からは初期値の定義ができないもの | `--sideW`, `--mainW` |
51
- | `--_{item}-{propName}` | `c--` の子要素プロパティ | `--_icon-size` |
52
- | `--_{varName}` | 状態管理用の内部変数 | `--_isHov`, `--_notHov` |
50
+ | `--_{varName}` | 上書きを想定しない内部処理用の変数・状態判定用の変数 | `--_panelH`、`--_flipX`、`--_isHov` |
51
+
52
+ `--{target}-{prop}`は、`:root`を起点にする場合も、`.b--*`や`.c--*`を起点にする場合も同じ形式です。`:root`以外を起点にする変数は、次のルールで外部からの影響を閉じます。
53
+
54
+ - 起点のセレクタで必ず初期値をセットする(例: `.b--list { --icon-size: 1em; }`)。祖先や他のコンポーネントから同名の値を継承しないため。
55
+ - 値を変えるときは`:root`ではなく、起点の要素にインラインstyleやpropsで指定する。
53
56
 
54
57
  ## クラスの命名規則
55
58
 
@@ -185,23 +188,8 @@ NG例: `flex` → `fx` としたうえで `flex-shrink` を `fsh` にする(`f
185
188
  .-bdrs:20 → border-radius: var(--bdrs--20);
186
189
  ```
187
190
 
188
- opacity トークンは音楽記号に由来する例外的な命名で、そのままクラス化される。
189
-
190
- ```
191
- .-o:mp → opacity: var(--o--mp);
192
- .-o:p → opacity: var(--o--p);
193
- .-o:pp → opacity: var(--o--pp);
194
- .-o:ppp → opacity: var(--o--ppp);
195
- ```
191
+ opacity トークンもそのままクラス化される(`.-o:p` → `opacity: var(--o--p)`)。
196
192
 
197
193
  ### 長いキーワード値の省略
198
194
 
199
- 6文字以上かつ省略しても意味が通るものは省略可:
200
-
201
- | 実際の値 | 省略名 | クラスの例 |
202
- | --- | --- | --- |
203
- | `uppercase` | `upper` | `-tt:upper` |
204
- | `lowercase` | `lower` | `-tt:lower` |
205
- | `fit-content` | `fit` | `-w:fit`, `-h:fit` |
206
- | `space-between` | `between` | `-ac:between`, `-jc:between` |
207
- | `currentColor` | `current` | `-bdc:current` |
195
+ 6文字以上かつ省略しても意味が通るものは省略可(`uppercase` → `-tt:upper` 等)。一覧は [property-class.md](./property-class.md#値の省略形例外一覧) を参照。
@@ -25,14 +25,14 @@
25
25
  | `fw` | `font-weight` | `-fw:light`, `-fw:normal`, `-fw:bold`, `-fw:100`〜`-fw:900` | — |
26
26
  | `ff` | `font-family` | `-ff:base`, `-ff:accent`, `-ff:mono` | — |
27
27
  | `fs` | `font-style` | `-fs:italic` | — |
28
- | `hl` | `--hl`(ハーフレディング) | `-hl:base`, `-hl:xs`, `-hl:s`, `-hl:l`, `-hl:0` | ✔ |
29
- | `lh` | `line-height`(`--hl` 経由・互換) | `-lh:base`, `-lh:xs`, `-lh:s`, `-lh:l`, `-lh:1` | — |
28
+ | `hl` | `--hl`(ハーフレディング) | `-hl:base`, `-hl:xs`, `-hl:s`, `-hl:l`, `-hl:xl`, `-hl:0` | ✔ |
29
+ | `lh` | `line-height`(倍率・`--lh` 経由) | `-lh:xs`, `-lh:s`, `-lh:m`, `-lh:l`, `-lh:xl`, `-lh:1` | — |
30
30
  | `lts` | `letter-spacing` | `-lts:base`, `-lts:s`, `-lts:l`, `-lts:xl` | — |
31
31
  | `ta` | `text-align` | `-ta:center`, `-ta:left`, `-ta:right` | — |
32
32
  | `td` | `text-decoration` | `-td:none` | — |
33
33
  | `tt` | `text-transform` | `-tt:upper`, `-tt:lower` | — |
34
34
 
35
- **注意:** Lism はハーフレディングで `line-height` を管理します(`line-height: calc(1em + var(--hl) * 2)`)。正規のプロパティは `hl` で、`--hl` にトークン値をセットします(`hl="0"` でハーフレディングなし、BP 指定可)。`lh` は互換ショートカットで、トークン値・`1` は `--hl` を制御し、`lh="1.7"` のような任意値はそのまま CSS `line-height` を出力します。新規コードでは `hl` を推奨します。
35
+ **注意:** `line-height` は全要素で `var(--lh, calc(1em + var(--hl) * 2))` として管理されます。基本は `hl`(fz 非依存の固定量)を使い、fz に比例した行送りを保ちたい場合だけ `lh`(倍率)を使います。`lh` を指定した要素の子孫では `hl` は効きません。
36
36
 
37
37
  ### 表示・可視性
38
38
 
@@ -101,7 +101,7 @@
101
101
 
102
102
  | Prop | CSS プロパティ | プリセット値クラス | BP |
103
103
  | --- | --- | --- | --- |
104
- | `bdrs` | `border-radius` | `-bdrs:0`, `-bdrs:10`, `-bdrs:20`, `-bdrs:30`, `-bdrs:40`, `-bdrs:99`, `-bdrs:inner` | ✔ |
104
+ | `bdrs` | `border-radius` | `-bdrs:0`, `-bdrs:10`, `-bdrs:20`, `-bdrs:30`, `-bdrs:40`, `-bdrs:50`, `-bdrs:99`, `-bdrs:inner` | ✔ |
105
105
  | `bdrs-tl` | `border-top-left-radius` | — | — |
106
106
  | `bdrs-tr` | `border-top-right-radius` | — | — |
107
107
  | `bdrs-br` | `border-bottom-right-radius` | — | — |
@@ -153,7 +153,7 @@
153
153
  | `pt` | `padding-top` | `-pt:5`, `-pt:10`, `-pt:20`, ... (SPACEトークン) | ✔ |
154
154
  | `pb` | `padding-bottom` | `-pb:5`, `-pb:10`, `-pb:20`, ... (SPACEトークン) | ✔ |
155
155
 
156
- SPACEトークンの全値(`5`〜`80`の離散値)は [tokens.md の余白 (space)](../tokens.md#余白-space) を参照。
156
+ SPACEトークンの全値(`5`〜`70`の離散値)は [tokens.md の余白 (space)](../tokens.md#余白-space) を参照。
157
157
 
158
158
  ### 余白 — Margin
159
159
 
@@ -12,10 +12,13 @@ Lism CSS のボーダーは、CSS 変数(`--bds` / `--bdw` / `--bdc`)で管
12
12
  `-bd` または `-bd-{side}` クラスが付くと、以下の初期値がセットされる。
13
13
 
14
14
  ```scss
15
+ /* 変数の初期値だけ弱い位置に置く(@layer ビルドでは @layer lism-base、no_layer ビルドでは :where()) */
15
16
  :where(.-bd, [class*=" -bd-"], [class^="-bd-"]) {
16
17
  --bds: solid;
17
18
  --bdw: 1px;
18
19
  --bdc: var(--divider);
20
+ }
21
+ .-bd, [class*=" -bd-"], [class^="-bd-"] {
19
22
  border-width: var(--bdw);
20
23
  border-color: var(--bdc);
21
24
  }
@@ -31,6 +31,7 @@ hover 時の挙動を制御する Property Class。`:hover` 擬似クラスで
31
31
  | `-hov:-bgc` | `background-color` | `var(--hov-bgc, var(--hov-bgc--default, color-mix(in srgb, var(--bgc, var(--base)), var(--neutral) 25%)))` |
32
32
  | `-hov:-o` | `opacity` | `var(--hov-o, var(--o--p))` |
33
33
  | `-hov:-bxsh` | `box-shadow` | `var(--hov-bxsh, var(--bxsh--50))` |
34
+ | `-hov:-transform` | `transform` | `var(--hov-transform, translate(0, -4px))` |
34
35
 
35
36
  任意の値へ変化させたい場合は、`--hov-{prop}` 変数で値を指定する。
36
37
 
@@ -107,7 +107,7 @@ Lism CSS のボーダーは CSS 変数(`--bds` / `--bdw` / `--bdc`)で管理
107
107
  | `-hov:{preset}` | hover 時のスタイルをプリセットで適用 | `:hover`(同上) |
108
108
  | `-hov:in:{preset}` | 親の `set--hov` を起点に子のスタイルを変化させる | 親に `set--hov` が必要 |
109
109
 
110
- **標準クラス:** `-hov:-c`, `-hov:-bgc`, `-hov:-bdc`, `-hov:-o`, `-hov:-bxsh`, `-hov:underline`, `-hov:in:hide`, `-hov:in:show`, `-hov:in:zoom`
110
+ **標準クラス:** `-hov:-c`, `-hov:-bgc`, `-hov:-bdc`, `-hov:-o`, `-hov:-bxsh`, `-hov:-transform`, `-hov:underline`, `-hov:in:hide`, `-hov:in:show`, `-hov:in:zoom`
111
111
 
112
112
  **`<Lism>` の `hov` prop:** 文字列指定(`hov="-c"` → `-hov:-c`。自動変換なし、カンマ区切りで複数可)とオブジェクト指定(`hov={{ c: 'red' }}` → `-hov:-c` + `--hov-c: var(--red)`。値 `true` でクラスのみ出力)が可能。
113
113