@lism-css/mcp 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/data/docs-index.json +152 -82
  2. package/dist/data/guides/SKILL.md +43 -19
  3. package/dist/data/guides/antipatterns.md +147 -0
  4. package/dist/data/guides/base-styles.md +3 -1
  5. package/dist/data/guides/components-core.md +21 -17
  6. package/dist/data/guides/components-ui.md +18 -13
  7. package/dist/data/guides/css-rules.md +43 -34
  8. package/dist/data/guides/customize.md +220 -0
  9. package/dist/data/guides/naming.md +26 -7
  10. package/dist/data/guides/primitive-class.md +82 -30
  11. package/dist/data/guides/primitives/a--decorator.md +2 -2
  12. package/dist/data/guides/primitives/a--divider.md +1 -1
  13. package/dist/data/guides/primitives/a--icon.md +1 -1
  14. package/dist/data/guides/primitives/a--spacer.md +1 -1
  15. package/dist/data/guides/primitives/l--autoColumns.md +71 -0
  16. package/dist/data/guides/primitives/l--box.md +2 -2
  17. package/dist/data/guides/primitives/l--center.md +1 -1
  18. package/dist/data/guides/primitives/l--cluster.md +2 -2
  19. package/dist/data/guides/primitives/l--columns.md +3 -3
  20. package/dist/data/guides/primitives/l--flex.md +2 -2
  21. package/dist/data/guides/primitives/l--flow.md +5 -5
  22. package/dist/data/guides/primitives/l--frame.md +2 -2
  23. package/dist/data/guides/primitives/l--grid.md +2 -2
  24. package/dist/data/guides/primitives/l--stack.md +1 -1
  25. package/dist/data/guides/primitives/{l--switchCols.md → l--switchColumns.md} +18 -18
  26. package/dist/data/guides/primitives/l--tileGrid.md +2 -2
  27. package/dist/data/guides/primitives/{l--sideMain.md → l--withSide.md} +42 -20
  28. package/dist/data/guides/prop-responsive.md +29 -4
  29. package/dist/data/guides/property-class/bd.md +127 -0
  30. package/dist/data/guides/property-class/hov.md +140 -0
  31. package/dist/data/guides/property-class/max-sz.md +99 -0
  32. package/dist/data/guides/property-class.md +49 -83
  33. package/dist/data/guides/set-class.md +65 -80
  34. package/dist/data/guides/tokens.md +26 -13
  35. package/dist/data/guides/trait-class/has--gutter.md +48 -0
  36. package/dist/data/guides/trait-class/has--mask.md +66 -0
  37. package/dist/data/guides/trait-class/has--snap.md +68 -0
  38. package/dist/data/guides/trait-class/has--transition.md +73 -0
  39. package/dist/data/guides/{primitives → trait-class}/is--boxLink.md +8 -8
  40. package/dist/data/guides/{primitives → trait-class}/is--container.md +11 -5
  41. package/dist/data/guides/{primitives → trait-class}/is--layer.md +5 -5
  42. package/dist/data/guides/{primitives → trait-class}/is--wrapper.md +8 -8
  43. package/dist/data/guides/trait-class.md +77 -0
  44. package/dist/data/guides/utility-class.md +9 -9
  45. package/dist/data/meta.js +2 -2
  46. package/dist/lib/load-markdown.js +1 -1
  47. package/dist/lib/search.js +8 -5
  48. package/dist/tools/get-component.js +4 -3
  49. package/dist/tools/get-guide.js +9 -2
  50. package/package.json +2 -2
  51. package/dist/data/guides/primitives/l--fluidCols.md +0 -71
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lism-css-guide
3
- description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIやページレイアウトの実装・コーディング、JSX・React・Astroでコンポーネントを実装・編集する時に参照。ユーティリティクラス・デザイントークン・レイアウトプリミティブ・命名規則・CSSLayer規則・レスポンシブ対応・ベーススタイリングのルール・CSS設計を提供する。"
3
+ description: "Lism CSS の設計・実装に関するガイド。CSSの編集・追加、UIコンポーネントやレイアウトの実装・編集時に参照。c--*, l--*, a--*, is--*, has--*, set--*, u--* -prop:value 形式のクラス・トークン(CSS変数)・命名規則・Layer規則・レスポンシブ対応について調べる時にも参照。"
4
4
  ---
5
5
 
6
6
  # Lism CSS Best Practices
@@ -9,9 +9,9 @@ description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIや
9
9
 
10
10
  調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
11
11
 
12
- > **バージョン情報:** このガイドは `lism-css@0.14.0` / `@lism-css/ui@0.14.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
12
+ > **バージョン情報:** このガイドは `lism-css@0.16.0` / `@lism-css/ui@0.16.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
13
13
 
14
- 公式ドキュメント: https://lism-css.com/docs/overview/
14
+ 公式ドキュメント: https://lism-css.com/docs/overview.md
15
15
 
16
16
 
17
17
  ## インストール
@@ -19,7 +19,7 @@ description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIや
19
19
  ### CDNでCSSファイルのみ読み込む場合
20
20
 
21
21
  ```html
22
- <link href="https://cdn.jsdelivr.net/npm/lism-css@0.14.0/dist/css/main.css" rel="stylesheet" />
22
+ <link href="https://cdn.jsdelivr.net/npm/lism-css@0.16.0/dist/css/main.css" rel="stylesheet" />
23
23
  ```
24
24
 
25
25
  ### npm パッケージ
@@ -48,6 +48,13 @@ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
48
48
 
49
49
  ## 実装ルール
50
50
 
51
+ ### コードを書く前に必ず参照
52
+
53
+ レイアウト選択ミスや典型的な記法ミスを避けるため、コード生成の前に以下を確認すること:
54
+
55
+ - **どの Primitive を使うか迷ったら** → [primitive-class.md の「カラムレイアウト Primitive の使い分けガイド」](./primitive-class.md#カラムレイアウト-primitive-の使い分けガイド) — 比較表と用途別の選び方で判断材料を提供
56
+ - **コードを書く前のチェック** → [antipatterns.md](./antipatterns.md) — Token typo / Prop 型ミス / レイアウト選択ミス / レスポンシブ抜けの NG → OK カタログ
57
+
51
58
  ### 基本方針: できる限りLism CSSの用意しているクラス・CSS変数・コンポーネントを使って書く
52
59
 
53
60
  まずは以下のチェックリストを確認しながら、Lism CSS でできることが何かを考えてから実装方針を立ててください。
@@ -71,21 +78,23 @@ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
71
78
 
72
79
  - 同じスタイルの組み合わせが3箇所以上で使われる場合は、コンポーネントとして切り出すことを検討する。
73
80
  - コンポーネントはできる限り `<Lism>`系コアコンポーネントやレイアウトプリミティブ(`Stack`, `Flex`, `Columns` 等)をベースに構築すること。
74
- - カスタムクラスが必要な場合は `.c--{name}` の命名規則に従う。
81
+ - カスタムクラスが必要な場合は `c--{name}` の命名規則に従う。
75
82
 
76
83
  ### 間違いやすい例
77
84
 
78
85
  | NG | OK | 理由 |
79
86
  |----|-----|------|
80
87
  | `<Heading level={3}>` | `<Heading level="3">` | `level` は文字列型(`'1'`〜`'6'`) |
81
- | `hov="shadow"` | `hov="bxsh"` | Lism の省略名は `bxsh`(box-shadow) |
88
+ | `hov="shadow"` | `hov="-bxsh"` | Lism の省略名は `bxsh`(box-shadow) |
82
89
  | `bgc="secondary"` | `bgc="base-2"` | カラートークンの間違い |
83
90
  | `p="8"`, `g="6"` | `p="20"`, `g="10"` | スペーストークンの間違い |
84
91
 
92
+ その他の典型的な NG パターンは [antipatterns.md](./antipatterns.md) にカタログ化されているので、コード生成前に確認すること。
93
+
85
94
  #### NG: レスポンシブの考慮漏れ・Gridの直書き
86
95
 
87
96
  渡されたPCサイズのデザインだけをみて、カラムレイアウトを`<Grid gtc="repeat(3, 1fr)>`のように固定してしまわないようにすること。
88
- 特に指示がなければ、レスポンシブを意識して実装する。`<Columns>`(`l--columns`)を使ってブレイクポイントで切り替えるか、`l--sideMain`や`l--fluidCols`で自動レスポンシブを採用することを検討する。
97
+ 特に指示がなければ、レスポンシブを意識して実装する。`<Columns>`(`l--columns`)を使ってブレイクポイントで切り替えるか、`l--withSide`や`l--autoColumns`で自動レスポンシブを採用することを検討する。
89
98
 
90
99
  また、Lism CSSではコンテナクエリを採用しているため、レスポンシブの値切り替えには先祖要素で `isContainer`(`is--container`クラス) が必要なことに注意。
91
100
 
@@ -104,18 +113,20 @@ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
104
113
  - [naming.md](./naming.md) — 命名規則の詳細。(CSS変数名・クラス名・Property Class の `{prop}` / `{value}` の省略ルール)
105
114
  - [base-styles.md](./base-styles.md) — HTML要素のベーススタイリング。(Reset CSSやHTML要素の基本スタイルをカスタマイズできるCSS変数)
106
115
  - [set-class.md](./set-class.md) — ベーススタイル・変数セットに使用する`set--` クラスの一覧と用途。
107
- - [primitive-class.md](./primitive-class.md) — レイアウトを組み立てる Primitive クラス(`is--`/`l--`/`a--`)の一覧と用途。
116
+ - [primitive-class.md](./primitive-class.md) — レイアウトを組み立てる Primitive クラス(`l--`/`a--`)の一覧と用途。カラムレイアウト系の使い分けガイドも含む。
117
+ - [antipatterns.md](./antipatterns.md) — AI が生成しがちな NG パターンと OK 対応。Token typo / Prop 型ミス / レイアウト選択ミス / レスポンシブ抜け。
118
+ - [trait-class.md](./trait-class.md) — 要素に役割・機能を宣言する Trait クラス(`is--`/`has--`)の一覧と用途。
108
119
  - [utility-class.md](./utility-class.md) — 具体的な用途・装飾・機能を持つユーティリティクラス(`u--` クラス)の一覧と用途。
109
120
  - [property-class.md](./property-class.md) — 単一のCSSプロパティに対応するProperty Class(`-{prop}:{value}`形式のクラス)の一覧・記法。
110
121
  - [prop-responsive.md](./prop-responsive.md) — レスポンシブ対応(ブレークポイント・コンテナクエリ)の書き方・仕様。
111
122
  - [components-core.md](./components-core.md) — `lism-css`パッケージに含まれるコアコンポーネントの一覧と用途。(React, Astroで使える`<Lism>`・Lism Props・getLismProps )
112
123
  - [components-ui.md](./components-ui.md) — `@lism-css/ui`パッケージに含まれるUIコンポーネント(Accordion・Modal・Tabs・Button 等)の Props・構造とCLIコマンドによるインストール方法。
124
+ - [customize.md](./customize.md) — SCSS変数の上書きによる、lism-cssのコアCSSの挙動カスタマイズ方法・`lism.config.js` によるコアコンポーネント挙動のカスタマイズ方法。
113
125
 
114
126
  これら各ファイルの冒頭にはTOC(目次)があり、セクションごとの詳細URL・ソースURLがまとめて記載されています。
115
127
 
116
- ### Primitive 単位の詳細リファレンス
128
+ ### クラス単位の詳細リファレンス
117
129
 
118
- `l--*` / `is--*` / `a--*` クラスや対応するコンポーネント(`<Flex>`, `<Grid>` 等)を使ってUIを実装する時は、以下の Primitive 別ファイルを参照してください。
119
130
 
120
131
  **Layout Primitives**
121
132
 
@@ -129,16 +140,23 @@ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
129
140
  - `l--frame` / `<Frame>`: [primitives/l--frame.md](./primitives/l--frame.md)
130
141
  - `l--columns` / `<Columns>`: [primitives/l--columns.md](./primitives/l--columns.md)
131
142
  - `l--tileGrid` / `<TileGrid>`: [primitives/l--tileGrid.md](./primitives/l--tileGrid.md)
132
- - `l--fluidCols` / `<FluidCols>`: [primitives/l--fluidCols.md](./primitives/l--fluidCols.md)
133
- - `l--switchCols` / `<SwitchCols>`: [primitives/l--switchCols.md](./primitives/l--switchCols.md)
134
- - `l--sideMain` / `<SideMain>`: [primitives/l--sideMain.md](./primitives/l--sideMain.md)
143
+ - `l--autoColumns` / `<AutoColumns>`: [primitives/l--autoColumns.md](./primitives/l--autoColumns.md)
144
+ - `l--switchColumns` / `<SwitchColumns>`: [primitives/l--switchColumns.md](./primitives/l--switchColumns.md)
145
+ - `l--withSide` / `<WithSide>`: [primitives/l--withSide.md](./primitives/l--withSide.md)
135
146
 
136
- **Trait Primitives**
147
+ **Trait Class (is--)**
137
148
 
138
- - `is--container` / `<Container>`: [primitives/is--container.md](./primitives/is--container.md)
139
- - `is--wrapper` / `<Wrapper>`: [primitives/is--wrapper.md](./primitives/is--wrapper.md)
140
- - `is--layer` / `<Layer>`: [primitives/is--layer.md](./primitives/is--layer.md)
141
- - `is--boxLink` / `<BoxLink>`: [primitives/is--boxLink.md](./primitives/is--boxLink.md)
149
+ - `is--container` / `<Container>`: [trait-class/is--container.md](./trait-class/is--container.md)
150
+ - `is--wrapper` / `<Wrapper>`: [trait-class/is--wrapper.md](./trait-class/is--wrapper.md)
151
+ - `is--layer` / `<Layer>`: [trait-class/is--layer.md](./trait-class/is--layer.md)
152
+ - `is--boxLink` / `<BoxLink>`: [trait-class/is--boxLink.md](./trait-class/is--boxLink.md)
153
+
154
+ **Trait Class (has--)**
155
+
156
+ - `has--transition` (`hasTransition` prop): [trait-class/has--transition.md](./trait-class/has--transition.md)
157
+ - `has--gutter` (`hasGutter` prop): [trait-class/has--gutter.md](./trait-class/has--gutter.md)
158
+ - `has--snap` (`hasSnap` prop): [trait-class/has--snap.md](./trait-class/has--snap.md)
159
+ - `has--mask` (`hasMask` prop): [trait-class/has--mask.md](./trait-class/has--mask.md)
142
160
 
143
161
  **Atomic Primitives**
144
162
 
@@ -147,8 +165,14 @@ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
147
165
  - `a--spacer` / `<Spacer>`: [primitives/a--spacer.md](./primitives/a--spacer.md)
148
166
  - `a--decorator` / `<Decorator>`: [primitives/a--decorator.md](./primitives/a--decorator.md)
149
167
 
168
+ **Property Class(特殊仕様)**
169
+
170
+ - `-bd` / `-bd-{side}` 系: [property-class/bd.md](./property-class/bd.md)
171
+ - `-hov:*` 系: [property-class/hov.md](./property-class/hov.md)
172
+ - `-max-sz:full` / `-max-sz:container`: [property-class/max-sz.md](./property-class/max-sz.md)
173
+
150
174
 
151
175
  ## このスキルファイル自身のアップデート方法
152
176
 
153
177
  `skills add lism-css/lism-css` を再実行してください。
154
- 更新があるか確認したい場合は、[GitHub リポジトリ](https://github.com/lism-css/lism-css/tree/main/.claude/skills/lism-css-guide) を直接チェックしてください。
178
+ 更新があるか確認したい場合は、[GitHub リポジトリ](https://github.com/lism-css/lism-css/tree/main/skills/lism-css-guide) を直接チェックしてください。
@@ -0,0 +1,147 @@
1
+ # アンチパターン辞書
2
+
3
+ AI が Lism CSS のコードを生成する際に間違いやすい記法と、その正しい書き方をカタログ化したもの。コードを書く前に該当カテゴリを確認すること。
4
+
5
+ ## TOC
6
+
7
+ - [Token typo(存在しない値)](#token-typo存在しない値)
8
+ - [Prop 型ミス](#prop-型ミス)
9
+ - [レイアウト選択ミス](#レイアウト選択ミス)
10
+ - [レスポンシブ抜け](#レスポンシブ抜け)
11
+
12
+ ---
13
+
14
+ ## Token typo(存在しない値)
15
+
16
+ Lism CSS側が用意しているトークン値と異なるものを書かないように注意する。
17
+ 正確な一覧は [tokens.md](./tokens.md) を参照すること。
18
+
19
+ ただし、ユーザーが独自に追加定義することは可能。あくまでデフォルトで用意されていないもので間違えやすいものを紹介しておく。
20
+
21
+ ### カラー
22
+
23
+ | NG | OK | 理由 |
24
+ |---|---|---|
25
+ | `bgc="primary"` | `bgc="brand"` | セマンティックカラーに `primary`/`secondary` は無い。ブランド色は `brand`/`accent` |
26
+ | `bgc="secondary"` | `bgc="base-2"` | サブ背景色は `base-2`(`base-3` がユーザーによって追加定義されている可能性もある) |
27
+ | `c="muted"` | `c="text-2"` | 補助テキスト色は `text-2` |
28
+ | `c="danger"` | `c="red"` | パレットカラーから選ぶ(`red` / `orange` 等) |
29
+
30
+ - セマンティックカラー: `base` / `base-2` / `text` / `text-2` / `divider` / `link` / `brand` / `accent`
31
+ - パレットカラー: `red` / `blue` / `green` / `yellow` / `purple` / `orange` / `pink` / `gray` / `white` / `black`
32
+
33
+ ### スペース(`p` / `m` / `g` 等)
34
+
35
+ | NG | OK | 理由 |
36
+ |---|---|---|
37
+ | `p="8"` | `p="10"` | スペーストークンは`5/10/15/20/30/40/50/60/70/80`。tailwindのような4の倍数ではない |
38
+ | `g="6"` | `g="5"` | 同上 |
39
+ | `m="100"` | `m="80"` | 上限は `80`(ユーザーが追加定義している可能性はある) |
40
+
41
+ ### フォントサイズ(`fz`)
42
+
43
+ | NG | OK | 理由 |
44
+ |---|---|---|
45
+ | `fz="14"` | `fz="s"` | `fz` は文字列キー(数値は不可) |
46
+ | `fz="large"`, `fz="md"` | `fz="l"` | 略号は `2xs` / `xs` / `s` / `m` / `l` / `xl` / `2xl` … |
47
+
48
+
49
+ ### 角丸 / 影
50
+
51
+ | NG | OK | 理由 |
52
+ |---|---|---|
53
+ | `bdrs="sm"`, `bdrs="round"` | `bdrs="20"`, `bdrs="99"` | 角丸トークンは `10` / `20` / `30` / `40` / `99` / `inner` |
54
+ | `bxsh="xs"`, `bxsh="sm"` | `bxsh="10"`, `bxsh="20"` | shadowトークンは `10` / `20` / `30` / `40` / `50` |
55
+
56
+ ---
57
+
58
+ ## Prop 型ミス
59
+
60
+ ### Heading の `level` は文字列
61
+
62
+ | NG | OK | 理由 |
63
+ |---|---|---|
64
+ | `<Heading level={3}>` | `<Heading level="3">` | `level` は `'1'` 〜 `'6'` の文字列 union 型 |
65
+
66
+ ### レスポンシブ値は配列 or オブジェクト
67
+
68
+ | NG | OK | 理由 |
69
+ |---|---|---|
70
+ | `<Columns cols="1,2,3">` | `<Columns cols={[1, 2, 3]}>` | レスポンシブは配列 |
71
+ | `<Box p="20 30 40">` | `<Box p={[20, 30, 40]}>` | 同上 |
72
+
73
+ ---
74
+
75
+ ## レイアウト選択ミス
76
+
77
+ 詳細な選択基準は [primitive-class.md](./primitive-class.md#カラムレイアウト-primitive-の使い分けガイド) の使い分けガイドを参照。
78
+
79
+ ### Grid 直書き vs Columns
80
+
81
+ | NG | OK | 理由 |
82
+ |---|---|---|
83
+ | `<Grid gtc="repeat(3, 1fr)">` | `<Columns cols={3}>` | 等幅 N 列は Columns で宣言的に書く |
84
+ | `<Grid gtc={['1fr', '1fr 1fr', '1fr 1fr 1fr']}>` | `<Columns cols={[1, 2, 3]}>` | BP 切替も Columns のほうが簡潔 |
85
+
86
+ ### コンテンツ幅のハードコード
87
+
88
+ | NG | OK | 理由 |
89
+ |---|---|---|
90
+ | `style={{ maxWidth: '1200px' }}` | `<Box max-sz="l">` | ヘッダーやセクションなど、コンテンツサイズにはトークン値(`xs` / `s` / `m` / `l` / `xl` / `container`)をできるだけ活用する |
91
+
92
+ ### サイドバー型レイアウト
93
+
94
+ | NG | OK | 理由 |
95
+ |---|---|---|
96
+ | `<Grid gtc="1fr 240px">` で固定 | `<WithSide sideW="240px">` | コンテンツ幅で自動切替したいなら WithSide |
97
+ | `<Flex>` で 2 カラム強制横並び | `<WithSide>` | 縦並びへの切替が必要なら WithSide |
98
+
99
+ ---
100
+
101
+ ## レスポンシブ抜け
102
+
103
+ ### `is--container` 祖先なしで BP 値を使用
104
+
105
+ レスポンシブ値(配列・オブジェクト・`-{prop}_{bp}` クラス)は、デフォルト設定(SCSS 側 `$is_container_query: 1`)では `@container` クエリで発火するため、祖先要素のいずれかに `is--container`(コンポーネントなら `isContainer` prop)が必須。
106
+
107
+ ※ プロジェクトの SCSS 設定で `$is_container_query: 0` にして `@media` クエリ運用に切り替えている場合は、`is--container` 祖先は不要。
108
+
109
+ ```jsx
110
+ // NG: container 祖先がないので sm/md 値が発火しない
111
+ <div>
112
+ <Box p={[20, 30, 40]}>...</Box>
113
+ </div>
114
+
115
+ // OK: 祖先に isContainer
116
+ <Stack isContainer>
117
+ <Box p={[20, 30, 40]}>...</Box>
118
+ </Stack>
119
+ ```
120
+
121
+ ### BP 専用クラスをベース値なしで使う
122
+
123
+ BP 専用クラス(`-{prop}_{bp}`)やコンポーネントの BP キー(`{ sm: ... }` 等)だけを指定すると、BP 未満では値が空になり意図しないレイアウト崩れを起こす。必ずベース値とセットで指定する。
124
+
125
+ ```jsx
126
+ // NG: sm 未満で p が未指定になる
127
+ <Box p={{ sm: 30 }}>...</Box>
128
+
129
+ // OK: ベース値(base / 配列の先頭)を必ず添える
130
+ <Box p={{ base: 20, sm: 30 }}>...</Box>
131
+ <Box p={[20, 30]}>...</Box>
132
+ ```
133
+
134
+ 生 HTML / クラス指定で書く場合も同様:
135
+
136
+ | NG | OK | 理由 |
137
+ |---|---|---|
138
+ | `<div class="-p_sm" style="--p_sm: var(--s30)">` | `<div class="-p:20 -p_sm" style="--p_sm: var(--s30)">` | BP 未満では値が空になるため、ベースクラス `-{prop}:{value}` も必要 |
139
+
140
+ ### ブレイクポイントの誤用
141
+
142
+ Lism CSS の標準出力で有効な BP は `sm: 480px` / `md: 800px` まで。`lg` 以降を使う場合は SCSS 設定で出力範囲を拡張する必要がある。`xs` は BP キーとして存在しない。
143
+
144
+ | NG | OK | 理由 |
145
+ |---|---|---|
146
+ | `<Box p={{ xs: 10, sm: 20 }}>` | `<Box p={{ base: 10, sm: 20 }}>` | デフォルトは `base`(`xs` キーは無い) |
147
+ | `cols={[1, 2, 3, 4]}` | `cols={[1, 2, 3]}` | 標準出力では `[base, sm, md]` までが有効。`lg` 以降は SCSS 設定が必要 |
@@ -9,7 +9,7 @@ Lism CSS は `@layer lism-base` レイヤーで、Reset CSS・HTML要素のベ
9
9
  - [Reset CSS](#reset-css)
10
10
  - [HTML 要素のベーススタイル](#html-要素のベーススタイル)
11
11
 
12
- [詳細](https://lism-css.com/docs/base-styles/)
12
+ [詳細](https://lism-css.com/docs/base-styles.md)
13
13
 
14
14
  ---
15
15
 
@@ -71,6 +71,8 @@ Reset CSS に加え、`@layer lism-base` 内で HTML タグに基本スタイル
71
71
 
72
72
  ### リスト(ul, ol)
73
73
 
74
+ class を持たない `ul` / `ol` のみブラウザ標準スタイルが自動で復活する(`_html.scss`)。Property Class のみが付いた `ul` / `ol` では list-style が消えたままになるため、箇条書き表示を維持したい場合は [`set--revert`](./set-class.md#set--revert) を付与する。
75
+
74
76
  | 変数 | フォールバック | 用途 |
75
77
  |------|------------|------|
76
78
  | `--list-px-s` | `var(--s30)` | リストの `padding-inline-start` |
@@ -16,11 +16,11 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
16
16
  - [Lism Props](#lism-props)
17
17
  - [セマンティックコンポーネント](#セマンティックコンポーネント)
18
18
  - [Atomic Primitives](#atomic-primitives)
19
- - [Trait Primitives](#trait-primitives)
19
+ - [Trait Components](#trait-components)
20
20
  - [Layout Primitives](#layout-primitives)
21
21
  - [`getLismProps()`](#getlismprops--外部コンポーネントとの連携)
22
22
 
23
- [詳細](https://lism-css.com/docs/core-components/lism-props/)
23
+ [詳細](https://lism-css.com/docs/core-components/lism-props.md)
24
24
 
25
25
  ---
26
26
 
@@ -55,7 +55,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
55
55
  | `variant` | `lismClass` 先頭クラスに対する BEM Modifier を付与(`c--` 専用。`a--` / `l--` には展開されない) | `variant="secondary"` |
56
56
  | `layout` | レイアウトプリミティブ(`l--{layout}`)を指定 | `layout="flow"` |
57
57
  | `atomic` | アトミックプリミティブ(`a--{atomic}`)を指定。`'divider'` / `'spacer'` / `'decorator'` が利用可能(`'icon'` は内部用) | `atomic="divider"` |
58
- | `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="gutter"`, `set="transition plain"`, `set="-plain"` |
58
+ | `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="plain"`, `set="var:hov var:bxsh"`, `set="-plain"` |
59
59
  | `util` | ユーティリティクラス(`u--{value}`)を指定。`set` と同様に複数指定・`-` prefix 除外が可能 | `util="cbox"`, `util="cbox trim"`, `util="-trim"` |
60
60
  | `exProps` | Lism Propsの処理をスキップして外部コンポーネントに直接渡すpropsオブジェクト | `exProps={{ size: '1em' }}` |
61
61
 
@@ -81,12 +81,12 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
81
81
  // → p, fz は Lism が処理、size は HogeIcon に直接渡される
82
82
 
83
83
  // set でセットクラスを付与(layout と同じ要領)
84
- <Box set="shadow" p="30">...</Box>
85
- // → <div class="l--box set--shadow -p:30">...</div>
84
+ <Box set="var:bxsh" p="30">...</Box>
85
+ // → <div class="l--box set--var:bxsh -p:30">...</div>
86
86
 
87
87
  // set を複数指定(スペース区切り)
88
- <Stack set="shadow hov" p="30">...</Stack>
89
- // → <div class="l--stack set--shadow set--hov -p:30">...</div>
88
+ <Stack set="var:bxsh var:hov" p="30">...</Stack>
89
+ // → <div class="l--stack set--var:bxsh set--var:hov -p:30">...</div>
90
90
 
91
91
  // `-` prefix で除外(コンポーネント内部で適用済みの set を打ち消す用途)
92
92
  <AccordionButton set="-plain">...</AccordionButton>
@@ -113,7 +113,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
113
113
  | 値 | 出力形式 | 例 |
114
114
  |------|------|-----|
115
115
  | トークン値・プリセット値 | `-{prop}:{value}` クラスのみ | `fz='l'` → `class="-fz:l"` |
116
- | `true` または `"-"` | `-{prop}` クラスのみ(変数なし) | `bd` / `bd='-'` → `class="-bd"` |
116
+ | `true` | `-{prop}` クラスのみ(変数なし) | `bd` / `bd={true}` → `class="-bd"` |
117
117
  | `:` で始まる値 | 強制的にクラス化 | `p=':hoge'` → `class="-p:hoge"` |
118
118
  | その他の値(レスポンシブ対応プロパティ) | `-{prop}` + `--{prop}` | `fz='20px'` → `class="-fz"` + `style="--fz:20px"` |
119
119
  | その他の値(レスポンシブ非対応プロパティ) | `style` 属性に直接出力 | `o='0.7'` → `style="opacity:0.7"` |
@@ -139,8 +139,8 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
139
139
  <Lism bd bdc="#000" bdw="2px">...</Lism>
140
140
  // 出力 → <div class="-bd" style="--bdc:#000;--bdw:2px">...</div>
141
141
 
142
- // `-` でクラスだけ出力(変数は親から継承したい場合などに使う)
143
- <Lism p='-' bdrs>...</Lism>
142
+ // `true` でクラスだけ出力(変数は親から継承したい場合などに使う)
143
+ <Lism p bdrs>...</Lism>
144
144
  // 出力 → <div class="-p -bdrs">...</div>
145
145
 
146
146
  // `:` で強制ユーティリティクラス化
@@ -177,7 +177,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
177
177
 
178
178
  ### Trait Props
179
179
 
180
- Trait Primitives クラス(`is--*`)を出力するためのプロパティ群です。
180
+ Trait クラス(`is--*` / `has--*`)を出力するためのプロパティ群です。
181
181
 
182
182
  | Prop | 出力クラス |
183
183
  |------|-----------|
@@ -190,6 +190,10 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
190
190
  | `isContainer` | `is--container` |
191
191
  | `isSide` | `is--side` |
192
192
  | `isSkipFlow` | `is--skipFlow` |
193
+ | `hasTransition` | `has--transition` |
194
+ | `hasGutter` | `has--gutter` |
195
+ | `hasSnap` | `has--snap` |
196
+ | `hasMask` | `has--mask` |
193
197
 
194
198
  ```jsx
195
199
  // Trait Props の使用例
@@ -240,9 +244,9 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
240
244
  各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
241
245
 
242
246
 
243
- ## Trait Primitives
247
+ ## Trait Components
244
248
 
245
- `<Lism isXxx>`のエイリアスコンポーネントです。
249
+ `<Lism isXxx>`のエイリアスコンポーネントです。`is--*` クラスを出力します。
246
250
 
247
251
  | コンポーネント | 内部処理 | 出力クラス |
248
252
  |-------------|------------|-----------|
@@ -251,7 +255,7 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
251
255
  | `<Layer>` | `isLayer` | `is--layer` |
252
256
  | `<BoxLink>` | `isBoxLink` | `is--boxLink` |
253
257
 
254
- 各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
258
+ Trait クラスの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `trait-class/` 配下の各ファイルを参照。`has--*` については [trait-class.md](./trait-class.md) を参照。
255
259
 
256
260
 
257
261
  ## Layout Primitives
@@ -270,9 +274,9 @@ Trait Primitives クラス(`is--*`)を出力するためのプロパティ
270
274
  | `<Frame>` | `l--frame` |
271
275
  | `<Columns>` | `l--columns` |
272
276
  | `<TileGrid>` | `l--tileGrid` |
273
- | `<FluidCols>` | `l--fluidCols` |
274
- | `<SwitchCols>` | `l--switchCols` |
275
- | `<SideMain>` | `l--sideMain` |
277
+ | `<AutoColumns>` | `l--autoColumns` |
278
+ | `<SwitchColumns>` | `l--switchColumns` |
279
+ | `<WithSide>` | `l--withSide` |
276
280
 
277
281
  各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
278
282
 
@@ -27,7 +27,7 @@ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
27
27
  - [DummyText](#dummytext)
28
28
  - [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
29
29
 
30
- [詳細](https://lism-css.com/ui/)
30
+ [詳細](https://lism-css.com/ui.md)
31
31
 
32
32
  ---
33
33
 
@@ -68,7 +68,7 @@ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
68
68
  | `type` | `'alert' \| 'point' \| 'warning' \| 'check' \| 'help' \| 'info'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
69
69
  | `keycolor` | `string` | — | キーカラー |
70
70
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
71
- | `layout` | `'flex' \| 'sideMain'` | `'flex'` | レイアウトプリミティブ |
71
+ | `layout` | `'flex' \| 'withSide'` | `'flex'` | レイアウトプリミティブ |
72
72
  | `flow` | `string` | `'s'` | コンテンツを囲む要素のフロー余白 |
73
73
 
74
74
  ```jsx
@@ -316,24 +316,29 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
316
316
 
317
317
  `@lism-css/ui` の UI コンポーネントは、CLI コマンドで自分のプロジェクトにソースコードをコピーして使うこともできます。コピーしたファイルは自由にカスタマイズ可能です。
318
318
 
319
+ コンポーネント名は `import` するときと同じ PascalCase で指定します。
320
+
319
321
  ```bash
320
322
  # 初期設定(framework、出力先ディレクトリを対話的に設定)
321
- npx lism-ui init
323
+ npx lism-cli ui init
322
324
 
323
325
  # コンポーネントを追加
324
- npx lism-ui add Button Modal
325
- npx lism-ui add -a # 全コンポーネントを追加
326
+ npx lism-cli ui add Button Modal
327
+ npx lism-cli ui add NavMenu
328
+ npx lism-cli ui add --all # 全コンポーネントを追加
326
329
 
327
330
  # 利用可能なコンポーネント一覧を表示
328
- npx lism-ui list
331
+ npx lism-cli ui list
329
332
  ```
330
333
 
331
- `init` で生成される `lism-ui.json`:
334
+ `ui init` で生成される `lism.config.js` の `cli` セクション:
332
335
 
333
- ```json
334
- {
335
- "framework": "react",
336
- "componentsDir": "src/components/ui",
337
- "helperDir": "src/components/ui/_helper"
338
- }
336
+ ```js
337
+ export default {
338
+ cli: {
339
+ framework: 'react',
340
+ componentsDir: 'src/components/ui',
341
+ helperDir: 'src/components/ui/_helper',
342
+ },
343
+ };
339
344
  ```
@@ -8,7 +8,7 @@
8
8
  - [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
9
9
  - [CSS の配置場所](#css-の配置場所)
10
10
 
11
- [詳細](https://lism-css.com/docs/css-methodology/)
11
+ [詳細](https://lism-css.com/docs/css-methodology.md)
12
12
 
13
13
  > **命名規則の詳細**: CSS変数名・クラス名・Property Class の `{prop}` / `{value}` の省略ルールについては [naming.md](./naming.md) を参照してください。
14
14
 
@@ -21,51 +21,59 @@ Lism CSS は CSS Layers による詳細度管理を採用しています。
21
21
 
22
22
  ```
23
23
  Settings(トークン定義)
24
- → @layer lism-base(Reset CSS・トークン・.set--クラス)
24
+ → @layer lism-base(Reset CSS・トークン・set-- クラス)
25
25
  → @layer reset(リセットCSS)
26
+ → @layer lism-trait(is-- / has-- Trait Class)
26
27
  → @layer lism-primitive
27
- → @layer trait(.is-- Trait Primitive)
28
- → @layer layout(.l-- Layout Primitive)
29
- → @layer atomic(.a-- Atomic Primitive)
30
- → @layer lism-component(.c-- Component Class — BEM 構造を持つ UI 部品)
28
+ → @layer layout(l-- Layout Primitive)
29
+ → @layer atomic(a-- Atomic Primitive)
30
+ → @layer lism-component(c-- Component Class — BEM 構造を持つ UI 部品)
31
31
  → @layer lism-custom(ユーザーカスタマイズ用)
32
- → @layer lism-utility(.u-- ユーティリティクラス)
32
+ → @layer lism-utilityu-- ユーティリティクラス)
33
33
  → Property Class(レイヤー外 — 最も詳細度が高い)
34
34
  ```
35
35
 
36
36
 
37
- ## プレフィックスとクラス分類
37
+ ## クラス分類とプレフィックス
38
38
 
39
- [詳細](https://lism-css.com/docs/primitives/)
39
+ [詳細](https://lism-css.com/docs/naming.md)
40
40
 
41
- クラス名のプレフィックスによって、役割とレイヤーの所属が決まります。
41
+ Lism CSSで定義されるクラスは、その役割とレイヤーの所属が決まっており、その分類によってプレフィックスが定められています。
42
42
 
43
- | プレフィックス | レイヤー | 役割 | 例 |
44
- |--------------|---------|------|-----|
45
- | `.set--` | lism-base | ベーススタイル上書き・トークン再定義 | `.set--plain`, `.set--transition` |
46
- | `.is--` | lism-primitive.trait | Trait Primitive(要素の静的特性) | `.is--container`, `.is--wrapper` |
47
- | `.l--` | lism-primitive.layout | Layout Primitive | `.l--grid`, `.l--flex`, `.l--stack` |
48
- | `.a--` | lism-primitive.atomic | Atomic Primitive | `.a--icon`, `.a--divider` |
49
- | `.c--` | lism-component | Component Class(BEM 構造を持つ UI 部品) | `.c--button`, `.c--accordion` |
50
- | `.u--` | lism-utility | 用途が明確なユーティリティ | `.u--cbox`, `.u--trim` |
51
- | `.-` | レイヤー外 | 単一プロパティ制御(Property Class) | `.-fz:l`, `.-p:20`, `.-d:none` |
43
+ | 分類 | 役割 | プレフィックス | 例 |
44
+ |---|---|---|---|
45
+ | Set Class | ベーススタイル上書き・変数提供 | `set--` | `set--plain`, `set--revert`, `set--var:hov`, `set--var:bxsh` |
46
+ | Layout Primitive | レイアウトの構成単位となる Primitive | `l--` | `l--grid`, `l--flex`, `l--stack` |
47
+ | Atomic Primitive | レイアウトの最小単位となる Primitive | `a--` | `a--icon`, `a--divider` |
48
+ | Component Class | BEM 構造を持つ UI 部品 | `c--` | `c--button`, `c--accordion` |
49
+ | `is--` Trait | 要素に役割(〜である)を宣言 | `is--` | `is--container`, `is--wrapper`, `is--layer`, `is--boxLink` |
50
+ | `has--` Trait | 要素に機能(〜を持つ)を付与 | `has--` | `has--transition`, `has--gutter`, `has--snap`, `has--mask` |
51
+ | Utility Class | 用途が明確な装飾系ユーティリティ | `u--` | `u--cbox`, `u--trim`, `u--divide`, `u--cells` |
52
+ | Property Class | 単一プロパティの制御 | `-` | `-fz:l`, `-p:20`, `-d:none` |
52
53
 
53
54
  **併用ルール:**
54
- - `.l--` と `.c--` は併用OK(例: `<div class="l--flex c--nav">`)
55
- - 同カテゴリ内の Primitive 併用は不可(例: `.l--flex` と `.l--grid`、`.a--icon` と `.a--divider` は同要素に付けない)
56
- - `.l--` × `.a--` は非推奨(役割的に同居しない想定)
57
- - `.is--` 同士は併用OK(Trait は複数併用できる)
58
- - `.is--` × `.l--` / `.a--` も併用OK
55
+ - `l--` と `c--` は併用OK(例: `<div class="l--flex c--nav">`)
56
+ - 同カテゴリ内の Primitive 併用は不可(例: `l--flex` と `l--grid`、`a--icon` と `a--divider` は同要素に付けない)
57
+ - `l--` × `a--` は非推奨(役割的に同居しない想定)
58
+ - `is--` / `has--` 同士は併用OK(Trait は複数併用できる)
59
+ - `is--` / `has--` × `l--` / `a--` も併用OK
59
60
  - `c--` の Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし以下は許容:
60
61
  - Block と自身の Modifier: `.c--button.c--button--outline`
61
62
  - Block と他 Block の Element: `.c--xxx.c--yyy_elem`
62
- - 子要素: `.c--card_header`, `.c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
63
+ - 子要素: `c--card_header`, `c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
64
+
65
+ **`is--` と `has--` の判定軸:**
66
+
67
+ | | `is--` | `has--` |
68
+ |---|---|---|
69
+ | 意味 | 〜である(役割・存在の宣言) | 〜を持つ(機能の付与) |
70
+ | CSS 変数 | 必須ではない | 必須(カスタマイズポイントを提供) |
63
71
 
64
72
  **記述順序:**
65
73
  class 属性にクラスを直接記述する場合は、以下の順序で並べてください。
66
74
 
67
75
  ```
68
- [customClass] [c--] [a--] [l--] [is--] [set--] [u--] [-]
76
+ [customClass] [c--] [a--] [l--] [set--] [is--] [has--] [u--] [-]
69
77
  ```
70
78
 
71
79
  | # | 区分 | 例 |
@@ -74,10 +82,11 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
74
82
  | 2 | Component(`c--`) | `c--box`, `c--box--primary` |
75
83
  | 3 | Atomic Primitive(`a--`) | `a--icon`, `a--divider` |
76
84
  | 4 | Layout Primitive(`l--`) | `l--flex`, `l--columns` |
77
- | 5 | Trait Primitives(`is--`) | `is--wrapper`, `is--layer` |
78
- | 6 | Set Class(`set--`) | `set--hov`, `set--transition` |
79
- | 7 | Utility Class(`u--`) | `u--cbox`, `u--trim` |
80
- | 8 | Property Class(`-`) | `-p:20`, `-bgc:base-2` |
85
+ | 5 | Set Class(`set--`) | `set--var:hov`, `set--var:bxsh` |
86
+ | 6 | Trait Class 役割宣言(`is--`) | `is--wrapper`, `is--layer` |
87
+ | 7 | Trait Class 機能付与(`has--`) | `has--transition`, `has--gutter` |
88
+ | 8 | Utility Class(`u--`) | `u--cbox`, `u--trim` |
89
+ | 9 | Property Class(`-`) | `-p:20`, `-bgc:base-2`, `-hov:-c` |
81
90
 
82
91
  ```html
83
92
  <!-- OK -->
@@ -98,9 +107,9 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
98
107
 
99
108
  | 分類 | 形式 | 例 |
100
109
  |---|---|---|
101
- | Block | `.c--{name}` | `.c--button`, `.c--card` |
102
- | Modifier | `.c--{name}--{modifier}` | `.c--button--outline` |
103
- | Element | `.c--{name}_{element}` | `.c--card_header`, `.c--card_body` |
110
+ | Block | `c--{name}` | `c--button`, `c--card` |
111
+ | Modifier | `c--{name}--{modifier}` | `c--button--outline` |
112
+ | Element | `c--{name}_{element}` | `c--card_header`, `c--card_body` |
104
113
 
105
114
  - Modifier は Block と併記して使用: `.c--button.c--button--outline`
106
115
  - Element は `_`(アンダースコア)一つ区切り
@@ -109,7 +118,7 @@ class 属性にクラスを直接記述する場合は、以下の順序で並
109
118
  - Block と他 Block の Element: `.c--xxx.c--yyy_elem`
110
119
  - `a--` / `l--` には `variant` の BEM 展開は適用されない**
111
120
 
112
- `c--` を使った独自コンポーネントを使う場合でも、他の Primitive クラス(`.l--`, `.is--`)や Property Class(`-{prop}:{value}`)との組み合わせを前提とした設計にすることで CSS の記述量を削減できます。`c--` クラスにスタイルが全くなく、HTML 側での可視性を高める名前付けのためだけに利用しても構いません。
121
+ `c--` を使った独自コンポーネントを使う場合でも、他の Primitive クラス(`l--`, `is--`)や Property Class(`-{prop}:{value}`)との組み合わせを前提とした設計にすることで CSS の記述量を削減できます。`c--` クラスにスタイルが全くなく、HTML 側での可視性を高める名前付けのためだけに利用しても構いません。
113
122
 
114
123
 
115
124
  ### 作成例