@lism-css/mcp 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.ja.md +1 -1
  2. package/dist/data/docs-index.json +267 -174
  3. package/dist/data/guides/SKILL.md +95 -54
  4. package/dist/data/guides/base-styles.md +2 -2
  5. package/dist/data/guides/components-core.md +87 -132
  6. package/dist/data/guides/components-ui.md +3 -15
  7. package/dist/data/guides/css-rules.md +110 -24
  8. package/dist/data/guides/naming.md +204 -0
  9. package/dist/data/guides/primitive-class.md +84 -0
  10. package/dist/data/guides/primitives/a--decorator.md +43 -0
  11. package/dist/data/guides/primitives/a--divider.md +62 -0
  12. package/dist/data/guides/primitives/a--icon.md +105 -0
  13. package/dist/data/guides/primitives/a--spacer.md +63 -0
  14. package/dist/data/guides/primitives/is--boxLink.md +97 -0
  15. package/dist/data/guides/primitives/is--container.md +46 -0
  16. package/dist/data/guides/primitives/is--layer.md +71 -0
  17. package/dist/data/guides/primitives/is--wrapper.md +87 -0
  18. package/dist/data/guides/primitives/l--box.md +31 -0
  19. package/dist/data/guides/primitives/l--center.md +55 -0
  20. package/dist/data/guides/primitives/l--cluster.md +38 -0
  21. package/dist/data/guides/primitives/l--columns.md +72 -0
  22. package/dist/data/guides/primitives/l--flex.md +74 -0
  23. package/dist/data/guides/primitives/l--flow.md +134 -0
  24. package/dist/data/guides/primitives/l--fluidCols.md +71 -0
  25. package/dist/data/guides/primitives/l--frame.md +94 -0
  26. package/dist/data/guides/primitives/l--grid.md +68 -0
  27. package/dist/data/guides/primitives/l--sideMain.md +102 -0
  28. package/dist/data/guides/primitives/l--stack.md +56 -0
  29. package/dist/data/guides/primitives/l--switchCols.md +69 -0
  30. package/dist/data/guides/primitives/l--tileGrid.md +61 -0
  31. package/dist/data/guides/property-class.md +12 -11
  32. package/dist/data/guides/set-class.md +11 -26
  33. package/dist/data/guides/tokens.md +26 -9
  34. package/dist/data/guides/utility-class.md +9 -8
  35. package/dist/data/meta.js +2 -2
  36. package/dist/lib/load-markdown.d.ts +3 -2
  37. package/dist/lib/load-markdown.js +23 -5
  38. package/dist/lib/search.js +20 -1
  39. package/dist/tools/get-component.js +119 -30
  40. package/dist/tools/get-guide.js +1 -1
  41. package/dist/tools/search-docs.js +1 -1
  42. package/package.json +1 -1
  43. package/dist/data/guides/module-class.md +0 -162
@@ -1,44 +1,31 @@
1
1
  ---
2
2
  name: lism-css-guide
3
- description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIやページレイアウトの実装・コーディング、JSX・React・Astroでコンポーネントを実装・編集する時に参照。ユーティリティクラス・デザイントークン・レイアウトモジュール・命名規則・CSSのLayer規則・レスポンシブ対応・ベーススタイリングのルール・CSS設計を提供する。"
3
+ description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIやページレイアウトの実装・コーディング、JSX・React・Astroでコンポーネントを実装・編集する時に参照。ユーティリティクラス・デザイントークン・レイアウトプリミティブ・命名規則・CSSのLayer規則・レスポンシブ対応・ベーススタイリングのルール・CSS設計を提供する。"
4
4
  ---
5
5
 
6
6
  # Lism CSS Best Practices
7
7
 
8
- このプロジェクトは CSS フレームワーク「Lism CSS」を使用しています。
8
+ このスキルは、「Lism CSS」によるCSS設計理論の全体像と、実装時のベストプラクティスに関するガイドを提供します。
9
9
 
10
- Lism CSS は、WEBサイトの骨組みをテンポ良くサクっと作るための軽量なCSS設計フレームワークです。デザインに自然と心地よいリズムを生み出すトークン設計、レイアウトファーストなモジュール設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。ビルドや設定は不要で、CSSを読み込むだけでも使えます。Every Layout のレイアウトプリミティブとハーモニックモジュラースケーリング、Tailwind CSS のユーティリティファーストアプローチ、ITCSS のレイヤー設計を融合した独自のCSS設計体系です。
10
+ 調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
11
11
 
12
- MCP サーバー (`@lism-css/mcp`) が利用可能な場合は、コンポーネントやPropsの詳細情報をそちらから取得してください。
13
-
14
- > **バージョン情報:** このガイドは `lism-css@0.12.0` / `@lism-css/ui@0.12.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
12
+ > **バージョン情報:** このガイドは `lism-css@0.14.0` / `@lism-css/ui@0.14.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
15
13
 
16
14
  公式ドキュメント: https://lism-css.com/docs/overview/
17
15
 
18
16
 
19
- ## パッケージ構成
20
-
21
- | npm パッケージ名 | 用途 |
22
- |-----------|------|
23
- | `lism-css` | コアCSSフレームワーク。レイアウトモジュール、デザイントークン、Property Class、React/Astroコンポーネントを提供 |
24
- | `@lism-css/ui` | `lism-css` の上に構築されたインタラクティブな UI コンポーネントライブラリ。Accordion, Modal, Tabs 等を React/Astro で提供 |
25
-
26
-
27
17
  ## インストール
28
18
 
29
- ### CDNCSSのみ)
19
+ ### CDNCSSファイルのみ読み込む場合
30
20
 
31
21
  ```html
32
- <link href="https://cdn.jsdelivr.net/npm/lism-css@0.12.0/dist/css/main.css" rel="stylesheet" />
22
+ <link href="https://cdn.jsdelivr.net/npm/lism-css@0.14.0/dist/css/main.css" rel="stylesheet" />
33
23
  ```
34
24
 
35
25
  ### npm パッケージ
36
26
 
37
- ```bash
38
- npm i lism-css
39
- # UI コンポーネントも使う場合
40
- npm i @lism-css/ui
41
- ```
27
+ - `lism-css` — コアパッケージ。Lism CSS本体となるCSSファイル、レイアウトプリミティブ、デザイントークン、Property Class、React/Astroコンポーネントを提供。
28
+ - `@lism-css/ui` — `lism-css` を使って構築された UI コンポーネントライブラリ。Accordion, Modal, Tabs, Button, Badge, Callout 等を React/Astro で提供。
42
29
 
43
30
  ### CSS 読み込み
44
31
 
@@ -46,68 +33,122 @@ npm i @lism-css/ui
46
33
  import 'lism-css/main.css';
47
34
  ```
48
35
 
49
- ### コンポーネント読み込み
36
+ ### コンポーネント読み込み例
50
37
 
51
38
  ```jsx
52
39
  // React
53
- import { Box, Flex, Stack, Grid, Text, Media } from 'lism-css/react';
54
- import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/react';
40
+ import { Flex, Stack, Grid, Columns } from 'lism-css/react';
41
+ import { Accordion, Tabs, Button } from '@lism-css/ui/react';
55
42
 
56
43
  // Astro
57
- import { Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
58
- import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
44
+ import { Flex, Stack, Grid, Columns } from 'lism-css/astro';
45
+ import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
59
46
  ```
60
47
 
61
48
 
62
49
  ## 実装ルール
63
50
 
64
- ### 基本: できる限りLism CSSの用意しているクラス・CSS変数・コンポーネントを使って書く
51
+ ### 基本方針: できる限りLism CSSの用意しているクラス・CSS変数・コンポーネントを使って書く
65
52
 
66
53
  まずは以下のチェックリストを確認しながら、Lism CSS でできることが何かを考えてから実装方針を立ててください。
67
54
 
68
- - `l--`,`a--`,`is--`, `c--`などのModule Classを用いることができるか?(React, Astroの場合は `Lism`, `Stack`, `Flex`, `Grid`, `Columns` 等のコンポーネントを利用して構築できるか?)
69
- - `set--`系クラス、`u--`系クラスは使えないか?
55
+ - `l--`,`a--`,`is--` などの Primitive Class や `c--` などの Component Class を用いることができるか?(React, Astroの場合は `Lism`, `Stack`, `Flex`, `Columns` 等のコンポーネントを利用して構築できるか?)
56
+ - Lism の用意している `set--`系クラス、`u--`系クラスは使えないか?
70
57
  - Property Class (`-{prop}:{value}` or `<Lism prop="value">`))を使ってスタイリングできるか?
71
58
  - 値をレスポンシブに切り替える時は Lism の Property Class (`-{prop}_{bp}` or `<Lism prop={[...]}>`)を使って実装できるか?
72
59
  - カラー・余白・フォントサイズ・タイポグラフィ・行間(ハーフレディング)・サイズ・角丸・シャドウなどはトークン値を流用できないか?
73
- - その他、LismのクラスやCSS変数でできることかどうか
60
+ - その他、Lismが用意するCSS変数を活用できないか?
61
+
62
+ ### ネイティブCSS で書くもの(必要に応じて適切な `@layer` 内で書くこと)
74
63
 
75
- ### ネイティブ CSS で書くもの(必要に応じて適切な @layer 内で書くこと)
76
- - アニメーションやhoverエフェクトは、Lismになければ適宜クラスを追加して使用する
77
- - コンポーネントの実装も、Lismになければ適宜`c--`クラスを追加して使用する(`@layer lism-modules`内で定義すること)
64
+ - Lismにないアニメーションやhoverエフェクト(適宜クラスを追加して使用する)
65
+ - 独自コンポーネントの実装に合わせた`c--`クラス(`@layer lism-component`内で定義する)
78
66
  - 複雑なセレクタ(`:nth-child`, `::before`, `::after` 等)を使用する必要があるスタイル
79
67
  - カスタムプロパティを使った独自の計算式が必要なスタイル
80
- - Lism のトークンやモジュールでカバーできない特殊なスタイル
68
+ - その他、Lism のトークンやプリミティブでカバーできない特殊なスタイル
81
69
 
82
70
  ### コンポーネント化のルール
83
- - 同じスタイルの組み合わせが3箇所以上で使われる場合は、コンポーネントとして切り出すことを検討する
84
- - コンポーネントはできる限り `<Lism>`系コアモジュールやレイアウトモジュール(`Stack`, `Flex`, `Grid`, `Columns` 等)をベースに構築し、Lism Propsを活用して作成すること
85
- - カスタムクラスが必要な場合は `.c--{name}` の命名規則に従う
71
+
72
+ - 同じスタイルの組み合わせが3箇所以上で使われる場合は、コンポーネントとして切り出すことを検討する。
73
+ - コンポーネントはできる限り `<Lism>`系コアコンポーネントやレイアウトプリミティブ(`Stack`, `Flex`, `Columns` 等)をベースに構築すること。
74
+ - カスタムクラスが必要な場合は `.c--{name}` の命名規則に従う。
75
+
76
+ ### 間違いやすい例
77
+
78
+ | NG | OK | 理由 |
79
+ |----|-----|------|
80
+ | `<Heading level={3}>` | `<Heading level="3">` | `level` は文字列型(`'1'`〜`'6'`) |
81
+ | `hov="shadow"` | `hov="bxsh"` | Lism の省略名は `bxsh`(box-shadow) |
82
+ | `bgc="secondary"` | `bgc="base-2"` | カラートークンの間違い |
83
+ | `p="8"`, `g="6"` | `p="20"`, `g="10"` | スペーストークンの間違い |
84
+
85
+ #### NG: レスポンシブの考慮漏れ・Gridの直書き
86
+
87
+ 渡されたPCサイズのデザインだけをみて、カラムレイアウトを`<Grid gtc="repeat(3, 1fr)>`のように固定してしまわないようにすること。
88
+ 特に指示がなければ、レスポンシブを意識して実装する。`<Columns>`(`l--columns`)を使ってブレイクポイントで切り替えるか、`l--sideMain`や`l--fluidCols`で自動レスポンシブを採用することを検討する。
89
+
90
+ また、Lism CSSではコンテナクエリを採用しているため、レスポンシブの値切り替えには先祖要素で `isContainer`(`is--container`クラス) が必要なことに注意。
91
+
92
+ #### NG: コンテンツ幅のハードコーディング
93
+
94
+ ページ全体のデザインデータを渡された時、サイト幅やセクションエリアのサイズをpxでハードコーディングする前に、`--sz--`トークンを活用できないかをまずは考えてください。
95
+ `<Lism as="section" max-sz="m"`>(`-max-sz:m`クラス) などの指定でコンテンツ幅を管理することができます。
86
96
 
87
97
 
88
98
  ## 詳細リファレンス
89
99
 
90
100
  このスキルには以下の詳細ファイルが含まれます。必要に応じて参照してください。
91
101
 
92
- | ファイル | 内容 | 公式ドキュメント |
93
- |---------|------|----------------|
94
- | [tokens.md](./tokens.md) | デザイントークン・CSS変数 余白・フォントサイズ・角丸・影・カラー・パレット | [tokens](https://lism-css.com/docs/tokens/) |
95
- | [base-styles.md](./base-styles.md) | ベーススタイリング — Reset CSSHTML要素のベーススタイル・CSS変数(トークン) | [base-styles](https://lism-css.com/docs/base-styles/) |
96
- | [set-class.md](./set-class.md) | `set--` クラス — `set--plain`/`set--shadow`/`set--hov`/`set--transition` 等のセットアップクラス | [set](https://lism-css.com/docs/set/) |
97
- | [module-class.md](./module-class.md) | モジュールクラス `is--`/`l--`/`a--`/`c--` クラスの一覧と用途 | [state](https://lism-css.com/docs/state/), [module-class](https://lism-css.com/docs/module-class/) |
98
- | [utility-class.md](./utility-class.md) | ユーティリティクラス `u--` クラスの一覧・SCSS ソースリンク・Property Class との違い | [utility-class](https://lism-css.com/docs/utility-class/) |
99
- | [property-class.md](./property-class.md) | Property Class — `-{prop}:{value}` 記法・主要Prop一覧・特殊Prop(ボーダー・ホバー)・出力タイプ | [property-class](https://lism-css.com/docs/property-class/) |
100
- | [prop-responsive.md](./prop-responsive.md) | レスポンシブ対応 ブレークポイント・コンテナクエリ・HTML/コンポーネントでの指定方法 | [responsive](https://lism-css.com/docs/responsive/) |
101
- | [components-core.md](./components-core.md) | コンポーネントシステム — コア・セマンティック・レイアウト・ステート・アトミック一覧、Lism PropsgetLismProps | [components](https://lism-css.com/docs/components/) |
102
- | [components-ui.md](./components-ui.md) | UIコンポーネント(`@lism-css/ui`)— Accordion・Modal・Tabs・Button 等の Props・構造・CLI | [components](https://lism-css.com/docs/components/) |
103
- | [css-rules.md](./css-rules.md) | CSS設計ルール — Layer構造・命名規則・プレフィックス・カスタムCSS追加ルール | [css-methodology](https://lism-css.com/docs/css-methodology/) |
102
+ - [tokens.md](./tokens.md) Lismで利用できるデザイントークンとCSS変数。(余白・フォントサイズ・タイポグラフィ・角丸・影・カラー・不透明度)
103
+ - [css-rules.md](./css-rules.md) — CSS設計の概要。(Layer構造・クラスの分類・プレフィックスのつけ方・Component クラス(`c--`)・カスタムCSSの追加ルール)
104
+ - [naming.md](./naming.md) 命名規則の詳細。(CSS変数名・クラス名・Property Class `{prop}` / `{value}` の省略ルール)
105
+ - [base-styles.md](./base-styles.md) — HTML要素のベーススタイリング。(Reset CSSHTML要素の基本スタイルをカスタマイズできるCSS変数)
106
+ - [set-class.md](./set-class.md) ベーススタイル・変数セットに使用する`set--` クラスの一覧と用途。
107
+ - [primitive-class.md](./primitive-class.md) レイアウトを組み立てる Primitive クラス(`is--`/`l--`/`a--`)の一覧と用途。
108
+ - [utility-class.md](./utility-class.md) — 具体的な用途・装飾・機能を持つユーティリティクラス(`u--` クラス)の一覧と用途。
109
+ - [property-class.md](./property-class.md) 単一のCSSプロパティに対応するProperty Class(`-{prop}:{value}`形式のクラス)の一覧・記法。
110
+ - [prop-responsive.md](./prop-responsive.md) — レスポンシブ対応(ブレークポイント・コンテナクエリ)の書き方・仕様。
111
+ - [components-core.md](./components-core.md) `lism-css`パッケージに含まれるコアコンポーネントの一覧と用途。(React, Astroで使える`<Lism>`・Lism PropsgetLismProps
112
+ - [components-ui.md](./components-ui.md) `@lism-css/ui`パッケージに含まれるUIコンポーネント(Accordion・Modal・Tabs・Button 等)の Props・構造とCLIコマンドによるインストール方法。
113
+
114
+ これら各ファイルの冒頭にはTOC(目次)があり、セクションごとの詳細URL・ソースURLがまとめて記載されています。
115
+
116
+ ### Primitive 単位の詳細リファレンス
117
+
118
+ `l--*` / `is--*` / `a--*` クラスや対応するコンポーネント(`<Flex>`, `<Grid>` 等)を使ってUIを実装する時は、以下の Primitive 別ファイルを参照してください。
119
+
120
+ **Layout Primitives**
121
+
122
+ - `l--box` / `<Box>`: [primitives/l--box.md](./primitives/l--box.md)
123
+ - `l--flex` / `<Flex>`: [primitives/l--flex.md](./primitives/l--flex.md)
124
+ - `l--stack` / `<Stack>`: [primitives/l--stack.md](./primitives/l--stack.md)
125
+ - `l--cluster` / `<Cluster>`: [primitives/l--cluster.md](./primitives/l--cluster.md)
126
+ - `l--grid` / `<Grid>`: [primitives/l--grid.md](./primitives/l--grid.md)
127
+ - `l--flow` / `<Flow>`: [primitives/l--flow.md](./primitives/l--flow.md)
128
+ - `l--center` / `<Center>`: [primitives/l--center.md](./primitives/l--center.md)
129
+ - `l--frame` / `<Frame>`: [primitives/l--frame.md](./primitives/l--frame.md)
130
+ - `l--columns` / `<Columns>`: [primitives/l--columns.md](./primitives/l--columns.md)
131
+ - `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)
135
+
136
+ **Trait Primitives**
137
+
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)
104
142
 
105
- 各ファイルの冒頭にはTOC(目次)があり、セクションごとの詳細URL・ソースURLがまとめて記載されています。
143
+ **Atomic Primitives**
106
144
 
145
+ - `a--icon` / `<Icon>`: [primitives/a--icon.md](./primitives/a--icon.md)
146
+ - `a--divider` / `<Divider>`: [primitives/a--divider.md](./primitives/a--divider.md)
147
+ - `a--spacer` / `<Spacer>`: [primitives/a--spacer.md](./primitives/a--spacer.md)
148
+ - `a--decorator` / `<Decorator>`: [primitives/a--decorator.md](./primitives/a--decorator.md)
107
149
 
108
- ## このスキルのアップデート方法
109
150
 
110
- skills.sh のコマンドを利用してください。
151
+ ## このスキルファイル自身のアップデート方法
111
152
 
112
- - `npx skills check` でアップデートの有無を確認
113
- - `npx skills update` でアップデートを実行
153
+ `skills add lism-css/lism-css` を再実行してください。
154
+ 更新があるか確認したい場合は、[GitHub リポジトリ](https://github.com/lism-css/lism-css/tree/main/.claude/skills/lism-css-guide) を直接チェックしてください。
@@ -15,7 +15,7 @@ Lism CSS は `@layer lism-base` レイヤーで、Reset CSS・HTML要素のベ
15
15
 
16
16
  ## Reset CSS
17
17
 
18
- ソース: [`reset.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/reset.scss)
18
+ ソース: [`reset.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/reset.scss)
19
19
 
20
20
  `@layer lism-base.reset` として定義される最小限のリセットスタイルです。
21
21
 
@@ -29,7 +29,7 @@ Lism CSS は `@layer lism-base` レイヤーで、Reset CSS・HTML要素のベ
29
29
 
30
30
  ## HTML 要素のベーススタイル
31
31
 
32
- ソース: [`_html.scss`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/src/scss/base/_html.scss)
32
+ ソース: [`_html.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/_html.scss)
33
33
 
34
34
  Reset CSS に加え、`@layer lism-base` 内で HTML タグに基本スタイルを適用しています。
35
35
  その中で、専用のCSS変数を使って値を調整できるようにしている部分をここでは紹介します。具体的なスタイルの詳細は、githubのソースコードを読んでください。
@@ -3,10 +3,10 @@
3
3
  Lism CSS(`lism-css`パッケージ)は React / Astro 向けのコンポーネントを提供しています。
4
4
 
5
5
  ```jsx
6
- // React
6
+ // React でのimport
7
7
  import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/react';
8
8
 
9
- // Astro
9
+ // Astro でのimport
10
10
  import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
11
11
  ```
12
12
 
@@ -15,13 +15,12 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
15
15
  - [コアコンポーネント: `<Lism>`](#コアコンポーネント-lism)
16
16
  - [Lism Props](#lism-props)
17
17
  - [セマンティックコンポーネント](#セマンティックコンポーネント)
18
- - [レイアウトコンポーネント(Layout Modules)](#レイアウトコンポーネントlayout-modules)
19
- - [ステートコンポーネント(State Modules)](#ステートコンポーネントstate-modules)
20
- - [アトミックコンポーネント(Atomic Modules)](#アトミックコンポーネントatomic-modules)
21
- - [Layout 優先の原則](#layout-優先の原則-layout-isstate-vs-state-layout)
18
+ - [Atomic Primitives](#atomic-primitives)
19
+ - [Trait Primitives](#trait-primitives)
20
+ - [Layout Primitives](#layout-primitives)
22
21
  - [`getLismProps()`](#getlismprops--外部コンポーネントとの連携)
23
22
 
24
- [詳細](https://lism-css.com/docs/components/)
23
+ [詳細](https://lism-css.com/docs/core-components/lism-props/)
25
24
 
26
25
  ---
27
26
 
@@ -31,28 +30,34 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
31
30
 
32
31
  ```jsx
33
32
  <Lism p="20" fz="l" c="brand">コンテンツ</Lism>
34
- // → <div class="-p:20 -fz:l -c:brand">コンテンツ</div>
33
+ ```
34
+ ↓ 出力
35
+ ```html
36
+ <div class="-p:20 -fz:l -c:brand">コンテンツ</div>
35
37
  ```
36
38
 
37
39
 
38
40
  ## Lism Props
39
41
 
40
- ソース: [props.ts](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/config/defaults/props.ts)
42
+ ソース: [props.ts](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts)
41
43
 
42
- `<Lism>` で受け取れる Lism CSS 専用プロパティを **Lism Props** と呼びます。
44
+ `<Lism>`系コンポーネントで受け取れる Lism CSS 専用プロパティを **Lism Props** と呼びます。
43
45
 
44
46
 
45
47
  ### 共通 Props
46
48
 
47
- すべての Lism コンポーネントで使えるプロップスです。
49
+ すべての Lism コンポーネントで使えるpropsです。
48
50
 
49
51
  | Prop | 説明 | 例 |
50
52
  |------|------|-----|
51
- | `as` | レンダリングする HTML 要素または外部コンポーネントを指定(デフォルト: `'div'`) | `as="section"`, `as={Image}` |
52
- | `lismClass` | コンポーネントの主要クラス名を指定。出力順序が高めになる | `lismClass='c--myComponent'` |
53
- | `variant` | `lismClass` に対するバリエーションクラスを出力 | `variant='secondary'` |
54
- | `layout` | レイアウトモジュールを指定し `l--{layout}` クラスを出力 | `layout='flow'` |
55
- | `exProps` | Lism Props処理をスキップして外部コンポーネントに直接渡す属性のオブジェクト | `exProps={{ size: '1em' }}` |
53
+ | `as` | レンダリングする HTML 要素または外部コンポーネントを指定(デフォルト: `"div"`) | `as="section"`, `as={Image}` |
54
+ | `lismClass` | コンポーネント基底となる `c--*` クラスを指定。`variant` による BEM 展開の対象 | `lismClass="c--myComponent"` |
55
+ | `variant` | `lismClass` 先頭クラスに対する BEM Modifier を付与(`c--` 専用。`a--` / `l--` には展開されない) | `variant="secondary"` |
56
+ | `layout` | レイアウトプリミティブ(`l--{layout}`)を指定 | `layout="flow"` |
57
+ | `atomic` | アトミックプリミティブ(`a--{atomic}`)を指定。`'divider'` / `'spacer'` / `'decorator'` が利用可能(`'icon'` は内部用) | `atomic="divider"` |
58
+ | `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="gutter"`, `set="transition plain"`, `set="-plain"` |
59
+ | `util` | ユーティリティクラス(`u--{value}`)を指定。`set` と同様に複数指定・`-` prefix 除外が可能 | `util="cbox"`, `util="cbox trim"`, `util="-trim"` |
60
+ | `exProps` | Lism Propsの処理をスキップして外部コンポーネントに直接渡すpropsオブジェクト | `exProps={{ size: '1em' }}` |
56
61
 
57
62
  ```jsx
58
63
  // as で HTML 要素を指定
@@ -74,6 +79,25 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
74
79
  // exProps で外部コンポーネント用プロパティを明示的に分離
75
80
  <Icon as={HogeIcon} exProps={{ size: "1em" }} p="10" fz="l">...</Icon>
76
81
  // → p, fz は Lism が処理、size は HogeIcon に直接渡される
82
+
83
+ // set でセットクラスを付与(layout と同じ要領)
84
+ <Box set="shadow" p="30">...</Box>
85
+ // → <div class="l--box set--shadow -p:30">...</div>
86
+
87
+ // set を複数指定(スペース区切り)
88
+ <Stack set="shadow hov" p="30">...</Stack>
89
+ // → <div class="l--stack set--shadow set--hov -p:30">...</div>
90
+
91
+ // `-` prefix で除外(コンポーネント内部で適用済みの set を打ち消す用途)
92
+ <AccordionButton set="-plain">...</AccordionButton>
93
+
94
+ // util でユーティリティクラス(u--)を付与
95
+ <Box util="cbox" keycolor="red" p="20">...</Box>
96
+ // → <div class="l--box u--cbox -p:20" style="--keycolor: var(--red)">...</div>
97
+
98
+ // util を複数指定・除外も set と同じ記法
99
+ <Lism util="cbox trim">...</Lism>
100
+ <Lism util="cbox -trim">...</Lism>
77
101
  ```
78
102
 
79
103
 
@@ -82,7 +106,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
82
106
  主要な CSS プロパティに対して省略記法(Shorthand)で指定できます。値に応じて **Property Class**(`-{prop}:{value}`)やインラインスタイルに変換されます。
83
107
 
84
108
  各プロパティで受け付けるトークン値・プリセット値の詳細は [property-class.md](./property-class.md) を参照。
85
- もしくは、[定義ファイルの`props.ts`](https://github.com/lism-css/lism-css/blob/main/packages/lism-css/config/defaults/props.ts) を読んでください。
109
+ もしくは、[定義ファイルの`props.ts`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts) を読んでください。
86
110
 
87
111
  `prop={value}`で指定した値(`value`)によって、基本的な出力は以下のように分類されます。
88
112
 
@@ -90,7 +114,7 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
90
114
  |------|------|-----|
91
115
  | トークン値・プリセット値 | `-{prop}:{value}` クラスのみ | `fz='l'` → `class="-fz:l"` |
92
116
  | `true` または `"-"` | `-{prop}` クラスのみ(変数なし) | `bd` / `bd='-'` → `class="-bd"` |
93
- | `:` で始まる値 | 強制的にユーティリティクラス化 | `p=':hoge'` → `class="-p:hoge"` |
117
+ | `:` で始まる値 | 強制的にクラス化 | `p=':hoge'` → `class="-p:hoge"` |
94
118
  | その他の値(レスポンシブ対応プロパティ) | `-{prop}` + `--{prop}` | `fz='20px'` → `class="-fz"` + `style="--fz:20px"` |
95
119
  | その他の値(レスポンシブ非対応プロパティ) | `style` 属性に直接出力 | `o='0.7'` → `style="opacity:0.7"` |
96
120
  | その他の値(変数プロパティ) | `--{prop}` | `bdw='2px'` → `style="--bdw:2px"` (`border-width`としては出力されない) |
@@ -151,27 +175,24 @@ import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
151
175
  デフォルトで**コンテナクエリ**を採用しているため、先祖にコンテナ要素(`is--container`が出力される`<Container>`または`isContainer`の指定)が必要です。
152
176
 
153
177
 
154
- ### State Props
178
+ ### Trait Props
155
179
 
156
- State Modules クラス(`is--*` / `set--*`)を出力するためのプロパティ群です。
180
+ Trait Primitives クラス(`is--*`)を出力するためのプロパティ群です。
157
181
 
158
- | Prop | 出力クラス | 用途 |
159
- |------|-----------|------|
160
- | `isWrapper(='{s\|l}')` | `is--wrapper` + `-contentSize:{s\|l}` | コンテンツ幅制限 |
161
- | `isLayer` | `is--layer` | 絶対配置レイヤー(inset:0) |
162
- | `isLinkBox` | `is--linkBox` | ボックス全体リンク化 |
163
- | `isContainer` | `is--container` | コンテナクエリ対象 |
164
- | `isSide` | `is--side` | サイド要素 |
165
- | `isSkipFlow` | `is--skipFlow` | Flow 余白をスキップ |
166
- | `isVertical` | `is--vertical` | 縦書き方向 |
167
- | `set="gutter"` | `set--gutter` | 左右ガター余白 |
168
- | `set="shadow"` | `set--shadow` | シャドウ付与 |
169
- | `set="hov"` | `set--hov` | ホバー効果 |
170
- | `set="transition"` | `set--transition` | トランジション |
171
- | `set="plain"` | `set--plain` | プレーン状態 |
182
+ | Prop | 出力クラス |
183
+ |------|-----------|
184
+ | `isWrapper` | `is--wrapper` |
185
+ | `isWrapper="{s\|l}"` | `is--wrapper` + `-contentSize:{s\|l}` |
186
+ | `isWrapper="{value}"` | `is--wrapper` + `-contentSize` + `--contentSize:{value}` |
187
+ | `isLayer` | `is--layer` |
188
+ | `isBoxLink` | `is--boxLink` |
189
+ | `isCoverLink` | `is--coverLink` |
190
+ | `isContainer` | `is--container` |
191
+ | `isSide` | `is--side` |
192
+ | `isSkipFlow` | `is--skipFlow` |
172
193
 
173
194
  ```jsx
174
- // State Props の使用例
195
+ // Trait Props の使用例
175
196
  <Stack isLayer>背景レイヤー</Stack>
176
197
  // → <div class="l--stack is--layer">...</div>
177
198
 
@@ -206,79 +227,7 @@ State Modules クラス(`is--*` / `set--*`)を出力するためのプロパ
206
227
  </Group>
207
228
  ```
208
229
 
209
- ### `<HTML>` コンポーネント
210
-
211
- 任意の HTML タグを直接レンダリングするためのコンポーネント。セマンティックコンポーネントがカバーしない要素に使います。
212
-
213
-
214
- ## レイアウトコンポーネント(Layout Modules)
215
-
216
- レイアウト構造を定義するメインのコンポーネント群です。内部で `layout` prop が固定されており、対応する `l--{layout}` クラスが自動で出力されます。
217
-
218
- | コンポーネント | layout | 出力クラス | 用途 |
219
- |-------------|--------|-----------|------|
220
- | `<Box>` | `box` | `l--box` | 汎用ボックス |
221
- | `<Flex>` | `flex` | `l--flex` | Flexbox(横方向) |
222
- | `<Stack>` | `stack` | `l--stack` | 縦積み(flex-direction: column) |
223
- | `<Cluster>` | `cluster` | `l--cluster` | 折り返し Flex(flex-wrap) |
224
- | `<Grid>` | `grid` | `l--grid` | CSS Grid |
225
- | `<Flow>` | `flow` | `l--flow` | フローコンテンツ(子要素間に余白) |
226
- | `<Center>` | `center` | `l--center` | 中央配置 |
227
- | `<Frame>` | `frame` | `l--frame` | アスペクト比フレーム |
228
- | `<Columns>` | `columns` | `l--columns` | CSS columns |
229
- | `<TileGrid>` | `tileGrid` | `l--tileGrid` | 均等タイルグリッド(cols x rows) |
230
- | `<FluidCols>` | `fluidCols` | `l--fluidCols` | auto-fill/auto-fit グリッド |
231
- | `<SwitchCols>` | `switchCols` | `l--switchCols` | レスポンシブカラム切り替え |
232
- | `<SideMain>` | `sideMain` | `l--sideMain` | サイド+メインの2カラム |
233
-
234
- ### レイアウト固有の Props
235
-
236
- 一部のレイアウトコンポーネントには専用の props があります。
237
-
238
- ```jsx
239
- // Grid: template 系 props
240
- <Grid gtc="1fr 1fr" gtr="auto">...</Grid>
241
-
242
- // TileGrid: 均等タイルグリッド
243
- <TileGrid cols="3" rows="2" g="20">...</TileGrid>
244
-
245
- // SwitchCols: 切り替えブレークポイント
246
- <SwitchCols breakSize="480px">...</SwitchCols>
247
-
248
- // SideMain: サイド幅とメイン幅
249
- <SideMain sideW="200px" mainW="1fr">...</SideMain>
250
-
251
- // FluidCols: auto-fill モード
252
- <FluidCols autoFill>...</FluidCols>
253
-
254
- // Flow: 子要素間の余白
255
- <Flow flow="30">...</Flow>
256
- ```
257
-
258
-
259
- ## ステートコンポーネント(State Modules)
260
-
261
- 要素に構造的な振る舞い(状態)を付与するコンポーネント群です。内部で `is--` クラスを出力します。
262
-
263
- | コンポーネント | 内部の state | 出力クラス | 用途 |
264
- |-------------|------------|-----------|------|
265
- | `<Container>` | `isContainer` + `isWrapper` | `is--container is--wrapper` | コンテナクエリ対象 + 幅制限 |
266
- | `<Wrapper>` | `isWrapper` | `is--wrapper` | コンテンツ幅制限 |
267
- | `<Layer>` | `isLayer` | `is--layer` | 絶対配置レイヤー(inset: 0) |
268
- | `<LinkBox>` | `isLinkBox` | `is--linkBox` | ボックス全体リンク化 |
269
-
270
- ```jsx
271
- <Container size="l">...</Container>
272
- // → <div class="is--container is--wrapper -contentSize:l">...</div>
273
-
274
- <Wrapper contentSize="s">...</Wrapper>
275
- // → <div class="is--wrapper -contentSize:s">...</div>
276
- ```
277
-
278
-
279
- ## アトミックコンポーネント(Atomic Modules)
280
-
281
- 特定の役割を持つ単機能コンポーネントです。
230
+ ## Atomic Primitives
282
231
 
283
232
  | コンポーネント | 出力クラス | 用途 |
284
233
  |-------------|-----------|------|
@@ -287,39 +236,45 @@ State Modules クラス(`is--*` / `set--*`)を出力するためのプロパ
287
236
  | `<Divider>` | `a--divider` | 区切り線 |
288
237
  | `<Decorator>` | `a--decorator` | 装飾要素(SCSS定義なし、クラス名のみ出力) |
289
238
 
290
- ```jsx
291
- <Icon as={LucideArrowRight} fz="xl" />
292
- <Media as="img" src="/image.jpg" alt="説明" ar="16/9" />
293
- ```
294
239
 
240
+ 各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
295
241
 
296
- ## Layout 優先の原則: `<Layout isState>` vs `<State layout="...">`
297
242
 
298
- レイアウトとステートの両方の性質を持つ場合、以下の2つの書き方で同じ出力が得られます。
243
+ ## Trait Primitives
299
244
 
300
- ```jsx
301
- // 方法A: レイアウトコンポーネント + is-- prop(推奨)
302
- <Stack isLayer>...</Stack>
303
- // → <div class="l--stack is--layer">...</div>
245
+ `<Lism isXxx>`のエイリアスコンポーネントです。
304
246
 
305
- // 方法B: Lism layout を指定
306
- <Lism layout="stack" isLayer>...</Lism>
307
- // <div class="l--stack is--layer">...</div>
308
- ```
247
+ | コンポーネント | 内部処理 | 出力クラス |
248
+ |-------------|------------|-----------|
249
+ | `<Container>` | `isContainer` | `is--container` |
250
+ | `<Wrapper>` | `isWrapper` | `is--wrapper` |
251
+ | `<Layer>` | `isLayer` | `is--layer` |
252
+ | `<BoxLink>` | `isBoxLink` | `is--boxLink` |
309
253
 
310
- **`<Layout isState>` の形式で書いてください(Layout 優先)。** レイアウトコンポーネントを軸にして、ステートを付加する書き方がコードの意図を明確にします。
254
+ 各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
311
255
 
312
- ```jsx
313
- // OK: Layout 優先
314
- <Stack isLayer>背景レイヤー</Stack>
315
- <Flex isWrapper="l">コンテンツ</Flex>
316
- <Grid isContainer>グリッド</Grid>
317
256
 
318
- // NG: State 優先(避ける)
319
- <Layer layout="stack">背景レイヤー</Layer>
320
- <Wrapper layout="flex">コンテンツ</Wrapper>
321
- ```
257
+ ## Layout Primitives
258
+
259
+ 内部で `layout` prop が固定されており、対応する `l--{layout}` クラスが自動で出力されます。各コンポーネントの専用 Props(`cols`, `rows`, `breakSize`, `sideW`/`mainW`, `flow` など)は、それぞれの詳細ファイルを参照してください。
260
+
261
+ | コンポーネント | 出力クラス |
262
+ |-------------|-----------|
263
+ | `<Box>` | `l--box` |
264
+ | `<Flex>` | `l--flex` |
265
+ | `<Stack>` | `l--stack` |
266
+ | `<Cluster>` | `l--cluster` |
267
+ | `<Grid>` | `l--grid` |
268
+ | `<Flow>` | `l--flow` |
269
+ | `<Center>` | `l--center` |
270
+ | `<Frame>` | `l--frame` |
271
+ | `<Columns>` | `l--columns` |
272
+ | `<TileGrid>` | `l--tileGrid` |
273
+ | `<FluidCols>` | `l--fluidCols` |
274
+ | `<SwitchCols>` | `l--switchCols` |
275
+ | `<SideMain>` | `l--sideMain` |
322
276
 
277
+ 各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
323
278
 
324
279
  ## `getLismProps()` — 外部コンポーネントとの連携
325
280
 
@@ -25,10 +25,9 @@ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
25
25
  - [Tabs](#tabs)
26
26
  - [ShapeDivider](#shapedivider)
27
27
  - [DummyText](#dummytext)
28
- - [DummyImage](#dummyimage)
29
28
  - [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
30
29
 
31
- [詳細](https://lism-css.com/docs/components/)
30
+ [詳細](https://lism-css.com/ui/)
32
31
 
33
32
  ---
34
33
 
@@ -69,7 +68,7 @@ import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
69
68
  | `type` | `'alert' \| 'point' \| 'warning' \| 'check' \| 'help' \| 'info'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
70
69
  | `keycolor` | `string` | — | キーカラー |
71
70
  | `icon` | `ReactNode \| string` | — | カスタムアイコン |
72
- | `layout` | `'flex' \| 'sideMain'` | `'flex'` | レイアウトモジュール |
71
+ | `layout` | `'flex' \| 'sideMain'` | `'flex'` | レイアウトプリミティブ |
73
72
  | `flow` | `string` | `'s'` | コンテンツを囲む要素のフロー余白 |
74
73
 
75
74
  ```jsx
@@ -204,7 +203,7 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
204
203
  | `modalId` | OpenBtn / CloseBtn | `string` | — | 対象モーダルの ID |
205
204
  | `duration` | Root | `string` | — | アニメーション持続時間。`--duration` 変数として出力 |
206
205
  | `offset` | Inner | `string` | — | 非表示時の位置オフセット。`--offset` 変数として出力 |
207
- | `layout` | Inner | `string` | — | Inner 要素のレイアウトモジュール |
206
+ | `layout` | Inner | `string` | — | Inner 要素のレイアウトプリミティブ |
208
207
 
209
208
  ```jsx
210
209
  <Modal.OpenBtn modalId='modal-01'>Open</Modal.OpenBtn>
@@ -313,17 +312,6 @@ HTML の `details/summary` 要素をラップしたコンポーネント。Accor
313
312
  ```
314
313
 
315
314
 
316
- ## DummyImage
317
-
318
- ソース: [DummyImage/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/DummyImage)
319
-
320
- ダミーのプレースホルダー画像を出力するコンポーネント。`cdn.lism-css.com` からダミー画像を取得。
321
-
322
- ```jsx
323
- <DummyImage />
324
- ```
325
-
326
-
327
315
  ## CLI でプロジェクトにコピーして使う
328
316
 
329
317
  `@lism-css/ui` の UI コンポーネントは、CLI コマンドで自分のプロジェクトにソースコードをコピーして使うこともできます。コピーしたファイルは自由にカスタマイズ可能です。