@lism-css/mcp 0.17.0 → 0.18.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.
- package/dist/data/docs-index.json +5 -5
- package/dist/data/guides/SKILL.md +3 -3
- package/dist/data/guides/antipatterns.md +130 -3
- package/dist/data/guides/naming.md +1 -1
- package/dist/data/guides/primitive-class.md +1 -1
- package/dist/data/guides/primitives/a--spacer.md +2 -2
- package/dist/data/guides/property-class.md +11 -12
- package/dist/data/guides/{prop-responsive.md → responsive.md} +40 -4
- package/dist/data/guides/set-class.md +21 -2
- package/dist/data/guides/tokens.md +30 -13
- package/dist/tools/get-guide.js +1 -1
- package/dist/tools/get-overview.js +3 -3
- package/package.json +1 -1
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
{
|
|
74
74
|
"sourcePath": "tokens.mdx",
|
|
75
75
|
"title": "デザイントークン",
|
|
76
|
-
"description": "Lism CSS
|
|
76
|
+
"description": "Lism CSS で定義されているカラー、余白、シャドウなどのデザイントークン一覧を紹介します。",
|
|
77
77
|
"category": "guide",
|
|
78
78
|
"headings": ["COLOR", "Typography", "SPACE", "RADIUS", "SHADOW", "OPACITY", "SIZE"],
|
|
79
79
|
"keywords": ["token", "トークン", "design token", "shadow", "radius", "opacity", "size", "color", "spacing", "typography"],
|
|
80
|
-
"snippet": "デザイントークンの一覧ページ。COLOR, Typography, SPACE, RADIUS, SHADOW, OPACITY, SIZE
|
|
80
|
+
"snippet": "デザイントークンの一覧ページ。COLOR, Typography, SPACE, RADIUS, SHADOW, OPACITY, SIZE トークンを掲載。カラー・タイポグラフィ・余白は個別ページでも詳細を解説。"
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
"sourcePath": "tokens/colors.mdx",
|
|
@@ -108,8 +108,8 @@
|
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
"sourcePath": "tokens/spacing.mdx",
|
|
111
|
-
"title": "
|
|
112
|
-
"description": "Lism CSS
|
|
111
|
+
"title": "余白トークン",
|
|
112
|
+
"description": "Lism CSS のフィボナッチ数列に基づく余白トークンと、対応するpropertyクラスについて解説します。",
|
|
113
113
|
"category": "guide",
|
|
114
114
|
"headings": ["SPACE: 余白のスケーリング", "対応する Property Class"],
|
|
115
115
|
"keywords": ["spacing", "余白", "スペーシング", "フィボナッチ", "padding", "margin", "gap", "property class"],
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
"sourcePath": "responsive.mdx",
|
|
203
|
-
"title": "
|
|
203
|
+
"title": "Responsive",
|
|
204
204
|
"description": "Lism CSS におけるブレイクポイントとレスポンシブ対応の仕組みについて解説します。",
|
|
205
205
|
"category": "guide",
|
|
206
206
|
"headings": ["レスポンシブ対応", "コンテナクエリ・メディアクエリ", "ブレイクポイント"],
|
|
@@ -9,7 +9,7 @@ description: "Lism CSS の設計・実装に関するガイド。CSSの編集・
|
|
|
9
9
|
|
|
10
10
|
調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
|
|
11
11
|
|
|
12
|
-
> **バージョン情報:** このガイドは `lism-css@0.
|
|
12
|
+
> **バージョン情報:** このガイドは `lism-css@0.18.0` / `@lism-css/ui@0.17.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
|
|
13
13
|
|
|
14
14
|
公式ドキュメント: https://lism-css.com/docs/overview.md
|
|
15
15
|
|
|
@@ -195,7 +195,7 @@ Figma 等のデザインデータから値を読み取って実装する場合
|
|
|
195
195
|
- 一貫性・スケーラビリティを優先。微差は許容する。
|
|
196
196
|
- **C. トークン全体の基準値を上書きする**
|
|
197
197
|
- デザインのスケールに合わせて、`--s-unit` / `--fz-mol` などの基準変数や、 `--s10`, `--fz--xl` , `--bdrs--10` などの**具体的な各トークン変数を `global.css` で再定義**することで、トークン全体をデザインデータに揃える。
|
|
198
|
-
- 既存トークンの上書きで吸収できない場合に限り、`--
|
|
198
|
+
- 既存トークンの上書きで吸収できない場合に限り、`--s45` 等のカスタムトークンを追加する。
|
|
199
199
|
|
|
200
200
|
4. 確認結果に従って実装する。
|
|
201
201
|
|
|
@@ -220,7 +220,7 @@ Figma 等のデザインデータから値を読み取って実装する場合
|
|
|
220
220
|
- [trait-class.md](./trait-class.md) — 要素に役割・機能を宣言する Trait クラス(`is--`/`has--`)の一覧と用途。
|
|
221
221
|
- [utility-class.md](./utility-class.md) — 具体的な用途・装飾・機能を持つユーティリティクラス(`u--` クラス)の一覧と用途。
|
|
222
222
|
- [property-class.md](./property-class.md) — 単一のCSSプロパティに対応するProperty Class(`-{prop}:{value}`形式のクラス)の一覧・記法。
|
|
223
|
-
- [
|
|
223
|
+
- [responsive.md](./responsive.md) — レスポンシブ対応(ブレークポイント・コンテナクエリ)の書き方・仕様。
|
|
224
224
|
- [components-core.md](./components-core.md) — `lism-css`パッケージに含まれるコアコンポーネントの一覧と用途。(React, Astroで使える`<Lism>`・Lism Props・getLismProps )
|
|
225
225
|
- [components-ui.md](./components-ui.md) — `@lism-css/ui`パッケージに含まれるUIコンポーネント(Accordion・Modal・Tabs・Button 等)の Props・構造とCLIコマンドによるインストール方法。
|
|
226
226
|
- [customize.md](./customize.md) — SCSS変数の上書きによる、lism-cssのコアCSSの挙動カスタマイズ方法・`lism.config.js` によるコアコンポーネント挙動のカスタマイズ方法。
|
|
@@ -37,13 +37,13 @@ Lism CSS側が用意しているトークン値と異なるものを書かない
|
|
|
37
37
|
|
|
38
38
|
### スペース(`p` / `m` / `g` 等)
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
スペーストークンの数値は**離散的**で、`5/10/15/20/25/30/35/40/50/60/70/80` のみが用意されている。`8/12/14/45/65/75` 等を書きそうになったら、必ず最寄りトークンに丸めるか、ユーザーに方針確認すること(→ [SKILL.md のデザイン取り込みフロー](./SKILL.md#デザインデータ取り込み時のフロー))。
|
|
41
41
|
|
|
42
42
|
| NG | OK | 理由 |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| `p="8"` | `p="10"` |
|
|
44
|
+
| `p="8"` | `p="10"` | スペーストークンは離散値のみ。tailwindのような4の倍数で連続するスケールではない |
|
|
45
45
|
| `g="6"` | `g="5"` | 同上 |
|
|
46
|
-
| `m="
|
|
46
|
+
| `m="45"`, `m="55"` | `m="40"` or `m="50"` | `40` 以降の中間値は用意されていない(前半は `5/15/25/35` まで補完済み) |
|
|
47
47
|
| `m="100"` | `m="80"` | 上限は `80`(ユーザーが追加定義している可能性はある) |
|
|
48
48
|
|
|
49
49
|
### フォントサイズ(`fz`)
|
|
@@ -226,6 +226,133 @@ Lism CSS では、プレフィックス(`c--` / `is--` / `has--` / `u--` / `se
|
|
|
226
226
|
|
|
227
227
|
---
|
|
228
228
|
|
|
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
|
+
|
|
229
356
|
## Prop 型ミス
|
|
230
357
|
|
|
231
358
|
### Heading の `level` は文字列
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|------|------|-----|
|
|
22
22
|
| 基本 | `--{prop}--{token}` | `--fz--l`, `--bdrs--20`, `--bxsh--10`, `--sz--s` |
|
|
23
23
|
| カラー | `--{color}` | `--brand`, `--text`, `--text-2`, `--red` |
|
|
24
|
-
|
|
|
24
|
+
| 余白 | `--s{Token}` | `--s10`, `--s40` |
|
|
25
25
|
|
|
26
26
|
トークンのバリエーション:
|
|
27
27
|
|
|
@@ -119,7 +119,7 @@ Lism CSS では、レイアウトを組み立てる小さな積み木として *
|
|
|
119
119
|
#### 補足
|
|
120
120
|
|
|
121
121
|
- 各 Primitive の詳細・使用例は [primitives/](./primitives/) 配下の個別ファイルを参照
|
|
122
|
-
- レスポンシブな値(配列指定)を使う場合は祖先要素に `is--container` が必須([
|
|
122
|
+
- レスポンシブな値(配列指定)を使う場合は祖先要素に `is--container` が必須([responsive.md](./responsive.md))
|
|
123
123
|
|
|
124
124
|
|
|
125
125
|
## Atomic Primitive(`a--`)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
## 専用Props
|
|
13
13
|
|
|
14
|
-
`<Spacer
|
|
14
|
+
`<Spacer>`では **`w` / `h` に対してSPACEトークンの値**が使えます(他のコンポーネントではSIZEトークンが優先されるため、スペースサイズを直感的に指定できる特殊対応)。
|
|
15
15
|
|
|
16
16
|
## Usage
|
|
17
17
|
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<p>Content...</p>
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
### SPACE
|
|
32
|
+
### SPACEトークンを使う
|
|
33
33
|
|
|
34
34
|
```jsx
|
|
35
35
|
<p>Content...</p>
|
|
@@ -187,13 +187,13 @@ Lism コンポーネントの Propsに渡す値の頭に `:` を付けると、
|
|
|
187
187
|
| `i-y-s` | `inset-block-start` | — | — |
|
|
188
188
|
| `i-y-e` | `inset-block-end` | — | — |
|
|
189
189
|
|
|
190
|
-
###
|
|
190
|
+
### 余白 — Padding
|
|
191
191
|
|
|
192
192
|
| Prop | CSS プロパティ | プリセット値クラス | BP クラス |
|
|
193
193
|
|------|--------------|-------------|-----|
|
|
194
|
-
| `p` | `padding` | `-p:0`, `-p:5`, `-p:10`, `-p:20`, ... (SPACE
|
|
195
|
-
| `px` | `padding-inline` | `-px:0`, `-px:5`, `-px:10`, `-px:20`, ... (SPACE
|
|
196
|
-
| `py` | `padding-block` | `-py:0`, `-py:5`, `-py:10`, `-py:20`, ... (SPACE
|
|
194
|
+
| `p` | `padding` | `-p:0`, `-p:5`, `-p:10`, `-p:20`, ... (SPACEトークン) | `-p_sm`, `-p_md` |
|
|
195
|
+
| `px` | `padding-inline` | `-px:0`, `-px:5`, `-px:10`, `-px:20`, ... (SPACEトークン) | `-px_sm`, `-px_md` |
|
|
196
|
+
| `py` | `padding-block` | `-py:0`, `-py:5`, `-py:10`, `-py:20`, ... (SPACEトークン) | `-py_sm`, `-py_md` |
|
|
197
197
|
| `px-s` | `padding-inline-start` | — | `-px-s_sm`, `-px-s_md` |
|
|
198
198
|
| `px-e` | `padding-inline-end` | — | `-px-e_sm`, `-px-e_md` |
|
|
199
199
|
| `py-s` | `padding-block-start` | — | `-py-s_sm`, `-py-s_md` |
|
|
@@ -203,18 +203,18 @@ Lism コンポーネントの Propsに渡す値の頭に `:` を付けると、
|
|
|
203
203
|
| `pt` | `padding-top` | — | `-pt_sm`, `-pt_md` |
|
|
204
204
|
| `pb` | `padding-bottom` | — | `-pb_sm`, `-pb_md` |
|
|
205
205
|
|
|
206
|
-
SPACE
|
|
206
|
+
SPACEトークン(全値): `5`, `10`, `15`, `20`, `25`, `30`, `35`, `40`, `50`, `60`, `70`, `80`
|
|
207
207
|
|
|
208
|
-
###
|
|
208
|
+
### 余白 — Margin
|
|
209
209
|
|
|
210
210
|
| Prop | CSS プロパティ | プリセット値クラス | BP クラス |
|
|
211
211
|
|------|--------------|-------------|-----|
|
|
212
|
-
| `m` | `margin` | `-m:auto`, `-m:0`, `-m:5`, `-m:10`, `-m:20`, ... (SPACE
|
|
213
|
-
| `mx` | `margin-inline` | `-mx:auto`, `-mx:0`, `-mx:5`, `-mx:10`, `-mx:20`, ... (SPACE
|
|
214
|
-
| `my` | `margin-block` | `-my:auto`, `-my:0`, `-my:5`, `-my:10`, `-my:20`, ... (SPACE
|
|
212
|
+
| `m` | `margin` | `-m:auto`, `-m:0`, `-m:5`, `-m:10`, `-m:20`, ... (SPACEトークン) | `-m_sm`, `-m_md` |
|
|
213
|
+
| `mx` | `margin-inline` | `-mx:auto`, `-mx:0`, `-mx:5`, `-mx:10`, `-mx:20`, ... (SPACEトークン) | `-mx_sm`, `-mx_md` |
|
|
214
|
+
| `my` | `margin-block` | `-my:auto`, `-my:0`, `-my:5`, `-my:10`, `-my:20`, ... (SPACEトークン) | `-my_sm`, `-my_md` |
|
|
215
215
|
| `mx-s` | `margin-inline-start` | `-mx-s:auto` | `-mx-s_sm`, `-mx-s_md` |
|
|
216
216
|
| `mx-e` | `margin-inline-end` | `-mx-e:auto` | `-mx-e_sm`, `-mx-e_md` |
|
|
217
|
-
| `my-s` | `margin-block-start` | `-my-s:auto`, `-my-s:0`, `-my-s:5`, `-my-s:10`, `-my-s:20`, ... (SPACE
|
|
217
|
+
| `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` |
|
|
218
218
|
| `my-e` | `margin-block-end` | `-my-e:auto` | `-my-e_sm`, `-my-e_md` |
|
|
219
219
|
| `ml` | `margin-left` | — | `-ml_sm`, `-ml_md` |
|
|
220
220
|
| `mr` | `margin-right` | — | `-mr_sm`, `-mr_md` |
|
|
@@ -225,7 +225,7 @@ SPACE トークン(全値): `5`, `10`, `15`, `20`, `30`, `40`, `50`, `60`, `
|
|
|
225
225
|
|
|
226
226
|
| Prop | CSS プロパティ | プリセット値クラス | BP クラス |
|
|
227
227
|
|------|--------------|-------------|-----|
|
|
228
|
-
| `g` | `gap` | `-g:0`, `-g:inherit`, `-g:5`, `-g:10`, `-g:20`, ... (SPACE
|
|
228
|
+
| `g` | `gap` | `-g:0`, `-g:inherit`, `-g:5`, `-g:10`, `-g:20`, ... (SPACEトークン) | `-g_sm`, `-g_md` |
|
|
229
229
|
| `cg` | `column-gap` | — | `-cg_sm`, `-cg_md` |
|
|
230
230
|
| `rg` | `row-gap` | — | `-rg_sm`, `-rg_md` |
|
|
231
231
|
|
|
@@ -375,4 +375,3 @@ Property Class をコードベース全体で一括修正する場合、同じ P
|
|
|
375
375
|
| JSX Props | `p="20"` / `p={20}` / `p={[20, 30]}` |
|
|
376
376
|
| getLismProps オブジェクト | `{ p: '20' }` / `{ p: 20 }` |
|
|
377
377
|
|
|
378
|
-
|
|
@@ -1,20 +1,55 @@
|
|
|
1
1
|
# レスポンシブ対応
|
|
2
2
|
|
|
3
|
-
Lism CSS
|
|
4
|
-
ブレークポイント: `sm: 480px`, `md: 800px`(`lg: 1120px` はカスタマイズにより利用可能)
|
|
3
|
+
Lism CSS は**コンテナクエリ**をデフォルトで採用しています(メディアクエリへの切り替えは customize.md を参照)。
|
|
5
4
|
|
|
6
5
|
## TOC
|
|
7
6
|
|
|
7
|
+
- [ブレイクポイント](#ブレイクポイント)
|
|
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/)
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
+
## ブレイクポイント
|
|
16
|
+
|
|
17
|
+
**モバイルファースト**で定義。各ラベルは「**そのサイズを超えた時から効く**」セマンティクスです(`sm` は「スマホ専用」ではなく「`sm` を超えたサイズで効く」ラベル)。**特定デバイスサイズに依存しないシンプルな閾値**を採用しています。
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Smartphone ──┬── Tablet (Portrait) ──┬── Tablet (Landscape) ──┬── Laptop and up
|
|
21
|
+
│ │ │
|
|
22
|
+
sm:480px md:800px (lg:1120px)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| BP | 値 | 効くタイミング |
|
|
26
|
+
|----|-----|----------------|
|
|
27
|
+
| `sm` | 480px | sm 以上 |
|
|
28
|
+
| `md` | 800px | md 以上 |
|
|
29
|
+
| (`lg`) | 1120px | lg 以上 |
|
|
30
|
+
|
|
31
|
+
**標準サポートは `sm` / `md` のみ。** `lg` 以降を使う場合は customize.md 参照の SCSS カスタマイズが必要です。
|
|
32
|
+
|
|
33
|
+
例: `-d:none -d_sm:block` → デフォルト非表示、`sm` 以上で表示。
|
|
34
|
+
|
|
35
|
+
### SCSS から利用する
|
|
36
|
+
|
|
37
|
+
ブレイクポイント自体を SCSS で参照する場合は `query` モジュール経由:
|
|
38
|
+
|
|
39
|
+
```scss
|
|
40
|
+
@use 'lism-css/scss/query' as query;
|
|
41
|
+
|
|
42
|
+
@include query.bp-up('sm') {
|
|
43
|
+
// sm 以上で効くスタイル(width >= 480px)
|
|
44
|
+
}
|
|
45
|
+
@include query.bp-up('md') {
|
|
46
|
+
// md 以上で効くスタイル(width >= 800px)
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
15
50
|
## HTML / Property Class での指定
|
|
16
51
|
|
|
17
|
-
|
|
52
|
+
ブレイクポイント用のクラス `-{prop}_{bp}` と CSS変数 `--{prop}_{bp}` を組み合わせます。
|
|
18
53
|
|
|
19
54
|
```html
|
|
20
55
|
<!-- sm 以上で p:30, md 以上で p:40 に切り替え -->
|
|
@@ -30,6 +65,7 @@ Lism CSS はコンテナクエリをデフォルトで採用しています。
|
|
|
30
65
|
|
|
31
66
|
**仕組み:**
|
|
32
67
|
- BPクラス `-{prop}_{bp}` は `@container (min-width: ...)` 内で発火し、`--{prop}_{bp}` 変数で切り替え先の値を指定
|
|
68
|
+
- コンテナクエリ採用のため、レスポンシブ値を使うには祖先要素に `is--container` などコンテナ宣言が必要
|
|
33
69
|
- 出力形式はプロパティによって 2 パターン(基本 / 例外)
|
|
34
70
|
|
|
35
71
|
**基本パターン** — BP 用変数を直接読む:
|
|
@@ -10,9 +10,9 @@ set-- は目的別に 2 カテゴリに分かれます。
|
|
|
10
10
|
| カテゴリ | 用途 | クラス |
|
|
11
11
|
|---------|------|--------|
|
|
12
12
|
| 基礎スタイリング | HTML 要素のリセット/リバート | `set--plain` / `set--revert` |
|
|
13
|
-
| 変数のセット | CSS 変数のセットアップのみを行う | `set--var:bxsh` / `set--var:hov` / `set--var:bdrsInner` |
|
|
13
|
+
| 変数のセット | CSS 変数のセットアップのみを行う | `set--var:bxsh` / `set--var:hov` / `set--var:bdrsInner` / `set--var:s` |
|
|
14
14
|
|
|
15
|
-
`set--var:{name}` の `{name}` は、そのクラスがセットアップする CSS 変数の名称に対応します(例: `--bxsh--*` → `var:bxsh`、`--_isHov` / `--_notHov` → `var:hov`、`--bdrs--inner` → `var:bdrsInner`)。
|
|
15
|
+
`set--var:{name}` の `{name}` は、そのクラスがセットアップする CSS 変数の名称に対応します(例: `--bxsh--*` → `var:bxsh`、`--_isHov` / `--_notHov` → `var:hov`、`--bdrs--inner` → `var:bdrsInner`、`--s*` → `var:s`)。
|
|
16
16
|
|
|
17
17
|
## TOC
|
|
18
18
|
|
|
@@ -21,6 +21,7 @@ set-- は目的別に 2 カテゴリに分かれます。
|
|
|
21
21
|
- [`set--var:bxsh`](#set--varbxsh)
|
|
22
22
|
- [`set--var:hov`](#set--varhov)
|
|
23
23
|
- [`set--var:bdrsInner`](#set--varbdrsinner)
|
|
24
|
+
- [`set--var:s`](#set--vars)
|
|
24
25
|
|
|
25
26
|
[詳細](https://lism-css.com/docs/set-class.md)
|
|
26
27
|
|
|
@@ -37,6 +38,7 @@ set-- は目的別に 2 カテゴリに分かれます。
|
|
|
37
38
|
| `set--var:bxsh` | [`_shadow.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/tokens/_shadow.scss) |
|
|
38
39
|
| `set--var:hov` | [`_hov.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/set/_hov.scss) |
|
|
39
40
|
| `set--var:bdrsInner` | [`_bdrsInner.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/set/_bdrsInner.scss) |
|
|
41
|
+
| `set--var:s` | [`_space.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/tokens/_space.scss) |
|
|
40
42
|
|
|
41
43
|
---
|
|
42
44
|
|
|
@@ -158,3 +160,20 @@ Lism CSSでは、クラスを持つリスト(`ul` / `ol`)ではスタイル
|
|
|
158
160
|
<Lism bdrs="inner">...</Lism>
|
|
159
161
|
</Lism>
|
|
160
162
|
```
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
## `set--var:s`
|
|
166
|
+
|
|
167
|
+
余白トークン(`--s5`〜`--s80`)を現在のフォントサイズ基準で再計算するためのクラスです。ButtonやBadgeなど、内部余白を要素自身のfont-sizeに追従させたい時に利用します。
|
|
168
|
+
|
|
169
|
+
詳細なスケールと使い方は[tokens.mdの`set--var:s`ユーティリティ](./tokens.md#set--vars-ユーティリティ)を参照してください。
|
|
170
|
+
|
|
171
|
+
使用例:
|
|
172
|
+
|
|
173
|
+
```html
|
|
174
|
+
<button class="set--var:s -fz:s -py:10 -px:20">...</button>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```jsx
|
|
178
|
+
<Button set="var:s" fz="s" py="10" px="20">...</Button>
|
|
179
|
+
```
|
|
@@ -28,7 +28,7 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
28
28
|
|
|
29
29
|
| カテゴリ | トークン値 | CSS変数パターン | 例 |
|
|
30
30
|
|---|---|---|---|
|
|
31
|
-
| 余白 (space) | `5`, `10`, `15`, `20`, `30`, `40`, `50`, `60`, `70`, `80` | `--s{N}` | `--s20` |
|
|
31
|
+
| 余白 (space) | `5`, `10`, `15`, `20`, `25`, `30`, `35`, `40`, `50`, `60`, `70`, `80` | `--s{N}` | `--s20` |
|
|
32
32
|
| フォントサイズ (fz) | `root`, `base`, `2xs`, `xs`, `s`, `m`, `l`, `xl`, `2xl`, `3xl`, `4xl`, `5xl` | `--fz--{key}` | `--fz--l` |
|
|
33
33
|
| ハーフレディング・行間 (lh/hl) | `base`, `xs`, `s`, `l` | `--hl--{key}` | `--hl--s` |
|
|
34
34
|
| 字間 (lts) | `base`, `s`, `l`, `xl` | `--lts--{key}` | `--lts--s` |
|
|
@@ -49,22 +49,39 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
49
49
|
|
|
50
50
|
## 余白 (space)
|
|
51
51
|
|
|
52
|
-
フィボナッチ数列ベースのスケーリング。`--s-unit
|
|
52
|
+
フィボナッチ数列ベースのスケーリング。`--s-unit`(デフォルト `calc(var(--fz--base) * 0.5)` = ≒ 8px)を基準単位とする。
|
|
53
53
|
|
|
54
54
|
| CSS変数 | 値 | 実サイズ目安 |
|
|
55
55
|
|---------|-----|------------|
|
|
56
|
-
| `--s5` | `calc(
|
|
56
|
+
| `--s5` | `calc(var(--s-unit) * 0.5)` | ≒ 4px |
|
|
57
57
|
| `--s10` | `var(--s-unit)` | ≒ 8px |
|
|
58
|
-
| `--s15` | `calc(
|
|
59
|
-
| `--s20` | `calc(
|
|
60
|
-
| `--
|
|
61
|
-
| `--
|
|
62
|
-
| `--
|
|
63
|
-
| `--
|
|
64
|
-
| `--
|
|
65
|
-
| `--
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
| `--s15` | `calc(var(--s-unit) * 1.5)` | ≒ 12px |
|
|
59
|
+
| `--s20` | `calc(var(--s-unit) * 2)` | ≒ 16px |
|
|
60
|
+
| `--s25` | `calc(var(--s-unit) * 2.5)` | ≒ 20px |
|
|
61
|
+
| `--s30` | `calc(var(--s-unit) * 3)` | ≒ 24px |
|
|
62
|
+
| `--s35` | `calc(var(--s-unit) * 4)` | ≒ 32px |
|
|
63
|
+
| `--s40` | `calc(var(--s-unit) * 5)` | ≒ 40px |
|
|
64
|
+
| `--s50` | `calc(var(--s-unit) * 8)` | ≒ 64px |
|
|
65
|
+
| `--s60` | `calc(var(--s-unit) * 13)` | ≒ 104px |
|
|
66
|
+
| `--s70` | `calc(var(--s-unit) * 21)` | ≒ 168px |
|
|
67
|
+
| `--s80` | `calc(var(--s-unit) * 34)` | ≒ 272px |
|
|
68
|
+
|
|
69
|
+
`--s40` 以降の主軸は係数 `1, 2, 3, 5, 8, 13, 21, 34`(フィボナッチ数列)に基づく。`--s5`〜`--s35` の前半部分は、主軸トークン間を補う中間値(4px / 12px / 20px / 32px 相当)として配置している。`--s-unit` を上書きするとスケール全体を比例的に調整できる。
|
|
70
|
+
|
|
71
|
+
### `set--var:s` ユーティリティ
|
|
72
|
+
|
|
73
|
+
`set--var:s` クラスを当てた要素のスコープ内では `--s-unit` が `0.5em` に切り替わり、`--s10`〜`--s80` が現在のフォントサイズ基準で再計算される。Button / Badge / インライン要素など、内部余白をフォントサイズに追従させたい部品で使う。
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<!-- ボタンの padding が button 自身の font-size に追従する -->
|
|
77
|
+
<button class="set--var:s -fz:s -py:10 -px:20">...</button>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`--s-unit` を任意値で上書きすれば、別の基準にも切り替えられる。
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<button class="set--var:s -p:10" style="--s-unit: .4375em">...</button>
|
|
84
|
+
```
|
|
68
85
|
|
|
69
86
|
|
|
70
87
|
## フォントサイズ (fz)
|
package/dist/tools/get-guide.js
CHANGED
|
@@ -21,7 +21,7 @@ const GUIDE_TOPICS = {
|
|
|
21
21
|
},
|
|
22
22
|
'utility-class': { file: 'utility-class.md', label: 'Utility classes (u--trim, u--cbox, etc.)' },
|
|
23
23
|
'css-rules': { file: 'css-rules.md', label: 'CSS methodology, layer structure, naming conventions' },
|
|
24
|
-
responsive: { file: '
|
|
24
|
+
responsive: { file: 'responsive.md', label: 'Responsive design, breakpoints, container queries' },
|
|
25
25
|
antipatterns: {
|
|
26
26
|
file: 'antipatterns.md',
|
|
27
27
|
label: 'AI code-generation antipatterns: token typos, prop type mistakes, layout choice errors, responsive omissions',
|
|
@@ -3,14 +3,14 @@ import { extractSection } from '../lib/markdown-utils.js';
|
|
|
3
3
|
import { markdownResponse, error, READ_ONLY_ANNOTATIONS } from '../lib/response.js';
|
|
4
4
|
/**
|
|
5
5
|
* SKILL.md を中核に、css-rules.md の Layer 構造セクションと
|
|
6
|
-
*
|
|
6
|
+
* responsive.md のブレイクポイントセクションを付加して返す。
|
|
7
7
|
*/
|
|
8
8
|
function buildOverviewMarkdown() {
|
|
9
9
|
const skill = loadMarkdown('SKILL.md');
|
|
10
10
|
const cssRules = loadMarkdown('css-rules.md');
|
|
11
|
-
const responsive = loadMarkdown('
|
|
11
|
+
const responsive = loadMarkdown('responsive.md');
|
|
12
12
|
const layerSection = extractSection(cssRules, 'CSS Layer 構造');
|
|
13
|
-
const bpSection = extractSection(responsive, '
|
|
13
|
+
const bpSection = extractSection(responsive, 'ブレイクポイント');
|
|
14
14
|
const parts = [skill];
|
|
15
15
|
if (layerSection) {
|
|
16
16
|
parts.push('\n---\n');
|