@lism-css/mcp 0.11.0 → 0.13.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/README.ja.md +4 -2
- package/README.md +4 -2
- package/dist/data/docs-index.json +456 -178
- package/dist/data/guides/SKILL.md +154 -0
- package/dist/data/guides/base-styles.md +106 -0
- package/dist/data/guides/components-core.md +292 -0
- package/dist/data/guides/components-ui.md +351 -0
- package/dist/data/guides/css-rules.md +166 -0
- package/dist/data/guides/primitive-class.md +148 -0
- package/dist/data/guides/primitives/a--decorator.md +45 -0
- package/dist/data/guides/primitives/a--divider.md +69 -0
- package/dist/data/guides/primitives/a--icon.md +105 -0
- package/dist/data/guides/primitives/a--spacer.md +63 -0
- package/dist/data/guides/primitives/is--boxLink.md +97 -0
- package/dist/data/guides/primitives/is--container.md +46 -0
- package/dist/data/guides/primitives/is--layer.md +71 -0
- package/dist/data/guides/primitives/is--vertical.md +52 -0
- package/dist/data/guides/primitives/is--wrapper.md +87 -0
- package/dist/data/guides/primitives/l--box.md +31 -0
- package/dist/data/guides/primitives/l--center.md +55 -0
- package/dist/data/guides/primitives/l--cluster.md +38 -0
- package/dist/data/guides/primitives/l--columns.md +72 -0
- package/dist/data/guides/primitives/l--flex.md +74 -0
- package/dist/data/guides/primitives/l--flow.md +134 -0
- package/dist/data/guides/primitives/l--fluidCols.md +68 -0
- package/dist/data/guides/primitives/l--frame.md +94 -0
- package/dist/data/guides/primitives/l--grid.md +68 -0
- package/dist/data/guides/primitives/l--sideMain.md +102 -0
- package/dist/data/guides/primitives/l--stack.md +56 -0
- package/dist/data/guides/primitives/l--switchCols.md +69 -0
- package/dist/data/guides/primitives/l--tileGrid.md +61 -0
- package/dist/data/guides/prop-responsive.md +54 -0
- package/dist/data/guides/property-class.md +401 -0
- package/dist/data/guides/set-class.md +192 -0
- package/dist/data/guides/tokens.md +228 -0
- package/dist/data/guides/utility-class.md +82 -0
- package/dist/data/meta.js +2 -2
- package/dist/index.js +4 -0
- package/dist/lib/load-data.js +2 -11
- package/dist/lib/load-markdown.d.ts +7 -0
- package/dist/lib/load-markdown.js +47 -0
- package/dist/lib/markdown-utils.d.ts +42 -0
- package/dist/lib/markdown-utils.js +158 -0
- package/dist/lib/schemas.d.ts +0 -242
- package/dist/lib/schemas.js +0 -64
- package/dist/lib/search.d.ts +2 -16
- package/dist/lib/search.js +29 -69
- package/dist/lib/types.d.ts +0 -64
- package/dist/tools/convert-css.js +96 -55
- package/dist/tools/get-component.js +150 -30
- package/dist/tools/get-guide.d.ts +2 -0
- package/dist/tools/get-guide.js +45 -0
- package/dist/tools/get-overview.js +26 -39
- package/dist/tools/get-props-system.js +45 -33
- package/dist/tools/get-tokens.js +9 -14
- package/dist/tools/search-docs.js +28 -10
- package/package.json +2 -2
- package/dist/data/components.json +0 -564
- package/dist/data/overview.json +0 -114
- package/dist/data/props-system.json +0 -1147
- package/dist/data/tokens.json +0 -148
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# UI コンポーネント(`@lism-css/ui`)
|
|
2
|
+
|
|
3
|
+
`@lism-css/ui` パッケージには、Lism CSS の上に構築されたインタラクティブな UI コンポーネントが含まれます。
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
// React
|
|
7
|
+
import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/react';
|
|
8
|
+
|
|
9
|
+
// Astro
|
|
10
|
+
import { Accordion, Tabs, Modal, Button } from '@lism-css/ui/astro';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## TOC
|
|
14
|
+
|
|
15
|
+
- [Accordion](#accordion)
|
|
16
|
+
- [Alert](#alert)
|
|
17
|
+
- [Avatar](#avatar)
|
|
18
|
+
- [Badge](#badge)
|
|
19
|
+
- [Button](#button)
|
|
20
|
+
- [Callout](#callout)
|
|
21
|
+
- [Chat](#chat)
|
|
22
|
+
- [Details](#details)
|
|
23
|
+
- [Modal](#modal)
|
|
24
|
+
- [NavMenu](#navmenu)
|
|
25
|
+
- [Tabs](#tabs)
|
|
26
|
+
- [ShapeDivider](#shapedivider)
|
|
27
|
+
- [DummyText](#dummytext)
|
|
28
|
+
- [DummyImage](#dummyimage)
|
|
29
|
+
- [CLI でプロジェクトにコピーして使う](#cli-でプロジェクトにコピーして使う)
|
|
30
|
+
|
|
31
|
+
[詳細](https://lism-css.com/ui/)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Accordion
|
|
36
|
+
|
|
37
|
+
ソース: [Accordion/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Accordion)
|
|
38
|
+
|
|
39
|
+
アコーディオン UI。クリックでコンテンツの開閉を切り替える。JSで開閉アニメーションを制御。パネルに `hidden='until-found'` を使用しブラウザのページ内検索に対応。
|
|
40
|
+
|
|
41
|
+
**構造:** `Accordion.Root > Accordion.Item > (Accordion.Heading > Accordion.Button) + Accordion.Panel`(`Accordion.Icon` は自動で含まれる)
|
|
42
|
+
|
|
43
|
+
| Prop | 対象 | 型 | デフォルト | 説明 |
|
|
44
|
+
|------|------|-----|----------|------|
|
|
45
|
+
| `allowMultiple` | Root | `boolean` | — | 複数アイテムの同時展開を許可 |
|
|
46
|
+
| `as` | Heading | `string` | `div` | 見出しのHTMLタグ。`div` 時は `role='heading'` が自動付与。`h2`〜`h6` 指定時は role なし |
|
|
47
|
+
| `flow` | Panel | `string` | — | パネル内コンテンツ領域(`c--accordion_content`)のフロー余白 |
|
|
48
|
+
|
|
49
|
+
```jsx
|
|
50
|
+
<Accordion.Root>
|
|
51
|
+
<Accordion.Item>
|
|
52
|
+
<Accordion.Heading>
|
|
53
|
+
<Accordion.Button>Label</Accordion.Button>
|
|
54
|
+
</Accordion.Heading>
|
|
55
|
+
<Accordion.Panel>Content</Accordion.Panel>
|
|
56
|
+
</Accordion.Item>
|
|
57
|
+
</Accordion.Root>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## Alert
|
|
62
|
+
|
|
63
|
+
ソース: [Alert/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Alert)
|
|
64
|
+
|
|
65
|
+
短めの文言を目立たせて強調表示するアラートボックス。`type` プリセットによりアイコンとカラーが自動設定される。
|
|
66
|
+
|
|
67
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
68
|
+
|------|-----|----------|------|
|
|
69
|
+
| `type` | `'alert' \| 'point' \| 'warning' \| 'check' \| 'help' \| 'info'` | `'alert'` | アラートタイプ。keycolor と icon の組み合わせプリセット |
|
|
70
|
+
| `keycolor` | `string` | — | キーカラー |
|
|
71
|
+
| `icon` | `ReactNode \| string` | — | カスタムアイコン |
|
|
72
|
+
| `layout` | `'flex' \| 'sideMain'` | `'flex'` | レイアウトプリミティブ |
|
|
73
|
+
| `flow` | `string` | `'s'` | コンテンツを囲む要素のフロー余白 |
|
|
74
|
+
|
|
75
|
+
```jsx
|
|
76
|
+
<Alert type='warning'>Warning message</Alert>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Avatar
|
|
81
|
+
|
|
82
|
+
ソース: [Avatar/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Avatar)
|
|
83
|
+
|
|
84
|
+
アバター(プロフィール画像)コンポーネント。Frame ベースの円形画像表示。`c--avatar` クラスが付与される。
|
|
85
|
+
|
|
86
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
87
|
+
|------|-----|----------|------|
|
|
88
|
+
| `src` | `string` | — | 画像URL |
|
|
89
|
+
| `alt` | `string` | — | 代替テキスト |
|
|
90
|
+
| `size` | `string` | `'1.5em'` | アバターのサイズ |
|
|
91
|
+
|
|
92
|
+
```jsx
|
|
93
|
+
<Avatar src='/avatar.jpg' alt='User' size='48px' />
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
## Badge
|
|
98
|
+
|
|
99
|
+
ソース: [Badge/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Badge)
|
|
100
|
+
|
|
101
|
+
バッジ(ラベル)コンポーネント。`span` 要素としてインライン表示。`c--badge` クラスが付与される。
|
|
102
|
+
|
|
103
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
104
|
+
|------|-----|----------|------|
|
|
105
|
+
| `variant` | `string` | — | バリエーション(`'outline'` 等)。`c--badge--{variant}` クラスが出力 |
|
|
106
|
+
| `keycolor` | `string` | — | キーカラー |
|
|
107
|
+
|
|
108
|
+
```jsx
|
|
109
|
+
<Badge keycolor='green'>New</Badge>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## Button
|
|
114
|
+
|
|
115
|
+
ソース: [Button/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Button)
|
|
116
|
+
|
|
117
|
+
ボタン型リンクコンポーネント。デフォルトで `a` 要素として出力。`c--button` クラスが付与される。
|
|
118
|
+
|
|
119
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
120
|
+
|------|-----|----------|------|
|
|
121
|
+
| `variant` | `string` | — | バリエーション(`'fill'`, `'outline'` 等)。`c--button--{variant}` クラスが出力 |
|
|
122
|
+
| `keycolor` | `string` | — | キーカラー |
|
|
123
|
+
| `href` | `string` | — | リンク先URL |
|
|
124
|
+
|
|
125
|
+
```jsx
|
|
126
|
+
<Button variant='fill' href='#'>Click me</Button>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## Callout
|
|
131
|
+
|
|
132
|
+
ソース: [Callout/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Callout)
|
|
133
|
+
|
|
134
|
+
記事中の重要ポイントを示すコンポーネント。タイトルとアイコン付きの強調ボックス。`type` プリセットによりアイコンとカラーが自動設定される。
|
|
135
|
+
|
|
136
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
137
|
+
|------|-----|----------|------|
|
|
138
|
+
| `type` | `'note' \| 'alert' \| 'point' \| 'warning' \| 'check' \| 'help'` | `'note'` | コールアウトタイプ |
|
|
139
|
+
| `keycolor` | `string` | — | キーカラー |
|
|
140
|
+
| `icon` | `ReactNode \| string` | — | カスタムアイコン |
|
|
141
|
+
| `title` | `string` | — | タイトルテキスト |
|
|
142
|
+
| `flow` | `string` | `'s'` | コンテンツ部分のフロー余白 |
|
|
143
|
+
|
|
144
|
+
```jsx
|
|
145
|
+
<Callout type='note' title='Important' keycolor='blue'>Important note</Callout>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
## Chat
|
|
150
|
+
|
|
151
|
+
ソース: [Chat/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Chat)
|
|
152
|
+
|
|
153
|
+
チャット風の吹き出しコンポーネント。Grid ベースの会話形式 UI。`c--chat` クラスが付与される。
|
|
154
|
+
|
|
155
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
156
|
+
|------|-----|----------|------|
|
|
157
|
+
| `name` | `string` | — | 発言者の名前 |
|
|
158
|
+
| `avatar` | `string` | — | アバター画像の src |
|
|
159
|
+
| `variant` | `'speak' \| 'think'` | `'speak'` | チャットタイプ |
|
|
160
|
+
| `direction` | `'start' \| 'end'` | `'start'` | 表示位置 |
|
|
161
|
+
| `keycolor` | `string` | `'gray'` | キーカラー |
|
|
162
|
+
| `flow` | `string` | `'s'` | コンテンツ要素のフロー余白 |
|
|
163
|
+
|
|
164
|
+
```jsx
|
|
165
|
+
<Chat name='Alice' avatar='/alice.jpg'>Hello!</Chat>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
## Details
|
|
170
|
+
|
|
171
|
+
ソース: [Details/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Details)
|
|
172
|
+
|
|
173
|
+
HTML の `details/summary` 要素をラップしたコンポーネント。Accordion とは違い JS を使わず CSS のみで実装。
|
|
174
|
+
|
|
175
|
+
**構造:** `Details.Root > Details.Summary > (Details.Title + Details.Icon) + Details.Content`
|
|
176
|
+
|
|
177
|
+
| Prop | 対象 | 型 | デフォルト | 説明 |
|
|
178
|
+
|------|------|-----|----------|------|
|
|
179
|
+
| `as` | Title | `string` | `'span'` | Title の HTML タグ |
|
|
180
|
+
| `--duration` | Root | `string` | — | 展開アニメーションの秒数(style 経由で指定) |
|
|
181
|
+
|
|
182
|
+
```jsx
|
|
183
|
+
<Details.Root>
|
|
184
|
+
<Details.Summary>
|
|
185
|
+
<Details.Title>Title</Details.Title>
|
|
186
|
+
<Details.Icon />
|
|
187
|
+
</Details.Summary>
|
|
188
|
+
<Details.Content>Content</Details.Content>
|
|
189
|
+
</Details.Root>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
## Modal
|
|
194
|
+
|
|
195
|
+
ソース: [Modal/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Modal)
|
|
196
|
+
|
|
197
|
+
モーダルダイアログ UI。`dialog` 要素を使用。`data-modal-open` / `data-modal-close` 属性で開閉を制御。
|
|
198
|
+
|
|
199
|
+
**構造:** `Modal.OpenBtn + Modal.Root > Modal.Inner > Modal.Body + Modal.CloseBtn`
|
|
200
|
+
|
|
201
|
+
| Prop | 対象 | 型 | デフォルト | 説明 |
|
|
202
|
+
|------|------|-----|----------|------|
|
|
203
|
+
| `id` | Root | `string` | — | モーダルの ID(必須) |
|
|
204
|
+
| `modalId` | OpenBtn / CloseBtn | `string` | — | 対象モーダルの ID |
|
|
205
|
+
| `duration` | Root | `string` | — | アニメーション持続時間。`--duration` 変数として出力 |
|
|
206
|
+
| `offset` | Inner | `string` | — | 非表示時の位置オフセット。`--offset` 変数として出力 |
|
|
207
|
+
| `layout` | Inner | `string` | — | Inner 要素のレイアウトプリミティブ |
|
|
208
|
+
|
|
209
|
+
```jsx
|
|
210
|
+
<Modal.OpenBtn modalId='modal-01'>Open</Modal.OpenBtn>
|
|
211
|
+
<Modal.Root id='modal-01'>
|
|
212
|
+
<Modal.Inner>
|
|
213
|
+
<Modal.Body>Content</Modal.Body>
|
|
214
|
+
<Modal.CloseBtn modalId='modal-01' />
|
|
215
|
+
</Modal.Inner>
|
|
216
|
+
</Modal.Root>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
## NavMenu
|
|
221
|
+
|
|
222
|
+
ソース: [NavMenu/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/NavMenu)
|
|
223
|
+
|
|
224
|
+
ナビゲーションメニューコンポーネント。`c--navMenu` クラスが付与される。
|
|
225
|
+
|
|
226
|
+
**構造:** `NavMenu.Root > NavMenu.Item > NavMenu.Link`(`NavMenu.Nest` でネスト可能)
|
|
227
|
+
|
|
228
|
+
| Prop | 対象 | 型 | デフォルト | 説明 |
|
|
229
|
+
|------|------|-----|----------|------|
|
|
230
|
+
| `hovBgc` | Root | `string` | — | ホバー時の背景カラー。`--hov-bgc` 変数として出力 |
|
|
231
|
+
| `hovC` | Root | `string` | — | ホバー時のテキストカラー。`--hov-c` 変数として出力 |
|
|
232
|
+
| `itemP` | Root | `string` | — | 各アイテムのパディング。`--_item-p` 変数として出力 |
|
|
233
|
+
| `href` | Link | `string` | — | リンク先URL。指定ありで `a` 要素、なしで `span` 要素 |
|
|
234
|
+
|
|
235
|
+
```jsx
|
|
236
|
+
<NavMenu.Root>
|
|
237
|
+
<NavMenu.Item>
|
|
238
|
+
<NavMenu.Link href='/'>Home</NavMenu.Link>
|
|
239
|
+
</NavMenu.Item>
|
|
240
|
+
<NavMenu.Item>
|
|
241
|
+
<NavMenu.Link href='/about'>About</NavMenu.Link>
|
|
242
|
+
</NavMenu.Item>
|
|
243
|
+
</NavMenu.Root>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
## Tabs
|
|
248
|
+
|
|
249
|
+
ソース: [Tabs/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/Tabs)
|
|
250
|
+
|
|
251
|
+
タブ切り替え UI。タブクリックでコンテンツパネルを切り替える。スタイリングはほぼなく動きのみ提供。
|
|
252
|
+
|
|
253
|
+
**構造:** `Tabs.Root > Tabs.Item > (Tabs.Tab + Tabs.Panel)`(`Tabs.List` も利用可能)
|
|
254
|
+
|
|
255
|
+
| Prop | 対象 | 型 | デフォルト | 説明 |
|
|
256
|
+
|------|------|-----|----------|------|
|
|
257
|
+
| `tabId` | Root | `string` | — | タブを特定するための ID 文字列 |
|
|
258
|
+
| `defaultIndex` | Root | `number` | `1` | 初期アクティブタブ(1始まり) |
|
|
259
|
+
| `listProps` | Root | `object` | — | タブボタンリスト要素へ渡す props |
|
|
260
|
+
|
|
261
|
+
```jsx
|
|
262
|
+
<Tabs.Root>
|
|
263
|
+
<Tabs.Item>
|
|
264
|
+
<Tabs.Tab>Tab 1</Tabs.Tab>
|
|
265
|
+
<Tabs.Panel>Content 1</Tabs.Panel>
|
|
266
|
+
</Tabs.Item>
|
|
267
|
+
<Tabs.Item>
|
|
268
|
+
<Tabs.Tab>Tab 2</Tabs.Tab>
|
|
269
|
+
<Tabs.Panel>Content 2</Tabs.Panel>
|
|
270
|
+
</Tabs.Item>
|
|
271
|
+
</Tabs.Root>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
## ShapeDivider
|
|
276
|
+
|
|
277
|
+
ソース: [ShapeDivider/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/ShapeDivider)
|
|
278
|
+
|
|
279
|
+
セクション間の波型などの装飾的な区切り要素。SVG ベースの形状で区切りを表現。
|
|
280
|
+
|
|
281
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
282
|
+
|------|-----|----------|------|
|
|
283
|
+
| `viewBox` | `string` | — | SVG の viewBox |
|
|
284
|
+
| `level` | `number` | `5` | シェイプの高さレベル。`0` で非表示 |
|
|
285
|
+
| `flip` | `'X' \| 'Y' \| 'XY'` | — | 反転方向。`data-flip` 属性として出力 |
|
|
286
|
+
| `stretch` | `string` | — | 水平方向の引き伸ばし量。`--_inner-stretch` 変数として出力 |
|
|
287
|
+
| `offset` | `string` | — | 水平方向のオフセット。`--_inner-offset` 変数として出力 |
|
|
288
|
+
| `isEmpty` | `boolean` | — | シェイプを非表示にしてスペーサーとして使用 |
|
|
289
|
+
| `isAnimation` | `boolean` | — | アニメーションを有効化。`data-has-animation` 属性として出力 |
|
|
290
|
+
|
|
291
|
+
```jsx
|
|
292
|
+
<ShapeDivider viewBox='0 0 100 10'>
|
|
293
|
+
<path d='M100 6C89.3 3.3 82.7 9 70 9S48.4 3 38 3 24.5 6 17 6C7.4 6 0 0 0 0v10h100V6z'/>
|
|
294
|
+
</ShapeDivider>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
## DummyText
|
|
299
|
+
|
|
300
|
+
ソース: [DummyText/](https://github.com/lism-css/lism-css/tree/main/packages/lism-ui/src/components/DummyText)
|
|
301
|
+
|
|
302
|
+
ダミーテキストを生成するコンポーネント。プレビューやテスト用。複数の言語とテキスト長に対応。
|
|
303
|
+
|
|
304
|
+
| Prop | 型 | デフォルト | 説明 |
|
|
305
|
+
|------|-----|----------|------|
|
|
306
|
+
| `lang` | `'ja' \| 'en' \| 'ar'` | `'en'` | テキストの言語 |
|
|
307
|
+
| `length` | `'xs' \| 's' \| 'm' \| 'l' \| 'xl' \| 'codes'` | `'m'` | テキストの長さ。`'codes'` は `b`, `i`, `a`, `code` 要素を含むテキスト |
|
|
308
|
+
| `pre` | `string` | — | テキストの前に表示する文字列 |
|
|
309
|
+
| `offset` | `number` | `0` | テキストのオフセット。区切り文字単位で先頭を切り捨て |
|
|
310
|
+
|
|
311
|
+
```jsx
|
|
312
|
+
<DummyText lang='ja' />
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
|
|
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
|
+
## CLI でプロジェクトにコピーして使う
|
|
328
|
+
|
|
329
|
+
`@lism-css/ui` の UI コンポーネントは、CLI コマンドで自分のプロジェクトにソースコードをコピーして使うこともできます。コピーしたファイルは自由にカスタマイズ可能です。
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# 初期設定(framework、出力先ディレクトリを対話的に設定)
|
|
333
|
+
npx lism-ui init
|
|
334
|
+
|
|
335
|
+
# コンポーネントを追加
|
|
336
|
+
npx lism-ui add Button Modal
|
|
337
|
+
npx lism-ui add -a # 全コンポーネントを追加
|
|
338
|
+
|
|
339
|
+
# 利用可能なコンポーネント一覧を表示
|
|
340
|
+
npx lism-ui list
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
`init` で生成される `lism-ui.json`:
|
|
344
|
+
|
|
345
|
+
```json
|
|
346
|
+
{
|
|
347
|
+
"framework": "react",
|
|
348
|
+
"componentsDir": "src/components/ui",
|
|
349
|
+
"helperDir": "src/components/ui/_helper"
|
|
350
|
+
}
|
|
351
|
+
```
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# CSS 設計ルール
|
|
2
|
+
|
|
3
|
+
## TOC
|
|
4
|
+
|
|
5
|
+
- [CSS Layer 構造](#css-layer-構造)
|
|
6
|
+
- [命名規則とプレフィックス](#命名規則とプレフィックス)
|
|
7
|
+
- [カスタムCSS を追加する場合](#カスタムcss-を追加する場合)
|
|
8
|
+
- [CSS の配置場所](#css-の配置場所)
|
|
9
|
+
|
|
10
|
+
[詳細](https://lism-css.com/docs/css-methodology/)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## CSS Layer 構造
|
|
15
|
+
|
|
16
|
+
Lism CSS は CSS Layers による詳細度管理を採用しています。
|
|
17
|
+
カスタムCSSを追加する場合は、この順序を意識してください。
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Settings(トークン定義)
|
|
21
|
+
→ @layer lism-base(Reset CSS・トークン・.set--クラス)
|
|
22
|
+
→ @layer reset(リセットCSS)
|
|
23
|
+
→ @layer lism-primitive
|
|
24
|
+
→ @layer trait(.is-- Trait Primitive)
|
|
25
|
+
→ @layer layout(.l-- Layout Primitive)
|
|
26
|
+
→ @layer atomic(.a-- Atomic Primitive)
|
|
27
|
+
→ @layer lism-component(.c-- Component Class — BEM 構造を持つ UI 部品)
|
|
28
|
+
→ @layer lism-custom(ユーザーカスタマイズ用)
|
|
29
|
+
→ @layer lism-utility(.u-- ユーティリティクラス)
|
|
30
|
+
→ Property Class(レイヤー外 — 最も詳細度が高い)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## 命名規則とプレフィックス
|
|
35
|
+
|
|
36
|
+
[詳細](https://lism-css.com/docs/primitives/)
|
|
37
|
+
|
|
38
|
+
クラス名のプレフィックスによって、役割とレイヤーの所属が決まります。
|
|
39
|
+
|
|
40
|
+
| プレフィックス | レイヤー | 役割 | 例 |
|
|
41
|
+
|--------------|---------|------|-----|
|
|
42
|
+
| `.set--` | lism-base | ベーススタイル上書き・トークン再定義 | `.set--plain`, `.set--transition` |
|
|
43
|
+
| `.is--` | lism-primitive.trait | Trait Primitive(要素の静的特性) | `.is--container`, `.is--wrapper` |
|
|
44
|
+
| `.l--` | lism-primitive.layout | Layout Primitive | `.l--grid`, `.l--flex`, `.l--stack` |
|
|
45
|
+
| `.a--` | lism-primitive.atomic | Atomic Primitive | `.a--icon`, `.a--divider` |
|
|
46
|
+
| `.c--` | lism-component | Component Class(BEM 構造を持つ UI 部品) | `.c--button`, `.c--accordion` |
|
|
47
|
+
| `.u--` | lism-utility | 用途が明確なユーティリティ | `.u--cbox`, `.u--trim` |
|
|
48
|
+
| `.-` | レイヤー外 | 単一プロパティ制御(Property Class) | `.-fz:l`, `.-p:20`, `.-d:none` |
|
|
49
|
+
|
|
50
|
+
**併用ルール:**
|
|
51
|
+
- `.l--` と `.c--` は併用OK(例: `<div class="l--flex c--nav">`)
|
|
52
|
+
- 同カテゴリ内の Primitive 併用は不可(例: `.l--flex` と `.l--grid`、`.a--icon` と `.a--divider` は同要素に付けない)
|
|
53
|
+
- `.l--` × `.a--` は非推奨(役割的に同居しない想定)
|
|
54
|
+
- `.is--` 同士は併用OK(Trait は複数併用できる)
|
|
55
|
+
- `.is--` × `.l--` / `.a--` も併用OK
|
|
56
|
+
- `c--` の Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし以下は許容:
|
|
57
|
+
- Block と自身の Modifier: `.c--button.c--button--outline`
|
|
58
|
+
- Block と他 Block の Element: `.c--xxx.c--yyy_elem`
|
|
59
|
+
- 子要素: `.c--card_header`, `.c--card_body`(`c--` のみ Element を持つ。`_` 一つ区切り)
|
|
60
|
+
|
|
61
|
+
**記述順序:**
|
|
62
|
+
class 属性にクラスを直接記述する場合は、以下の順序で並べてください。粒度の大きい(塊としての役割を持つ)クラスから、粒度の小さい(単一プロパティ制御)クラスの順です。
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
[customClass] [c--/a--] [l--] [is--*] [set--*] [u--*] [Property Class...]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| # | 区分 | 例 |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| 1 | 独自クラス(`customClass`) | `my-card`, `hoge` |
|
|
71
|
+
| 2 | Component / Atomic Primitive(`c--` / `a--`) | `c--box`, `a--icon`, `c--box c--box--primary` |
|
|
72
|
+
| 3 | Layout Primitive(`l--`) | `l--flex`, `l--grid` |
|
|
73
|
+
| 4 | Trait Primitives(`is--`) | `is--wrapper`, `is--layer` |
|
|
74
|
+
| 5 | Set Class(`set--`) | `set--hov`, `set--card` |
|
|
75
|
+
| 6 | ユーティリティ(`u--`) | `u--cbox`, `u--trim` |
|
|
76
|
+
| 7 | Property Class(`-`) | `-p:20`, `-bgc:base-2` |
|
|
77
|
+
|
|
78
|
+
```html
|
|
79
|
+
<!-- OK -->
|
|
80
|
+
<div class="c--nav l--flex -p:20 -g:20">...</div>
|
|
81
|
+
|
|
82
|
+
<!-- NG: Property Class が先 -->
|
|
83
|
+
<div class="-p:20 -g:20 l--flex c--nav">...</div>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
なお、`class` 属性内の並び順は CSS の適用結果(詳細度・カスケード順)には影響しません。この順序はあくまで可読性と一貫性のための整理です。
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## カスタムCSS を追加する場合
|
|
90
|
+
|
|
91
|
+
独自のスタイルを追加する場合は、対象に合った Lism の CSS Layer 内に記述してください。
|
|
92
|
+
|
|
93
|
+
```css
|
|
94
|
+
/* カスタムコンポーネント → lism-component に追加 */
|
|
95
|
+
@layer lism-component {
|
|
96
|
+
.c--my-card {
|
|
97
|
+
border: 1px solid var(--brand);
|
|
98
|
+
border-radius: var(--bdrs--20);
|
|
99
|
+
padding: var(--s30);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* ベーススタイルの拡張 → lism-base に追加 */
|
|
104
|
+
@layer lism-base {
|
|
105
|
+
.set--my-theme {
|
|
106
|
+
--brand: #c00;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
カスタムCSS内でも、できる限り Lism のCSS変数(トークン)を使ってください。
|
|
112
|
+
|
|
113
|
+
```css
|
|
114
|
+
/* NG */
|
|
115
|
+
.c--my-card { padding: 24px; border-radius: 8px; }
|
|
116
|
+
|
|
117
|
+
/* OK */
|
|
118
|
+
.c--my-card { padding: var(--s30); border-radius: var(--bdrs--20); }
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
ただし、明確にその数値に意図がある場合は、生のCSS値を使用しても構いません。
|
|
122
|
+
|
|
123
|
+
**レイヤー外に書く場合:**
|
|
124
|
+
`@layer` の外(レイヤーなし)でカスタムCSSを書くのは、**Property Class(`-{prop}:{value}`)を拡張する場合のみ**としてください。それ以外のカスタムスタイルは必ずいずれかの `@layer` 内に記述します。
|
|
125
|
+
|
|
126
|
+
```css
|
|
127
|
+
/* OK: Property Class の拡張はレイヤー外 */
|
|
128
|
+
.-myProp\:myValue { ... }
|
|
129
|
+
|
|
130
|
+
/* NG: コンポーネントやユーティリティをレイヤー外に書かない */
|
|
131
|
+
.c--my-card { ... }
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
## CSS の配置場所
|
|
136
|
+
|
|
137
|
+
### グローバル CSS(サイト全体)
|
|
138
|
+
|
|
139
|
+
Lism のトークン変数のカスタマイズやベーススタイルの上書きは、サイト全体で読み込むグローバル CSS ファイルに記述します。(lism-cssの`main.css`ファイルよりあとで読み込むこと)。
|
|
140
|
+
|
|
141
|
+
```css
|
|
142
|
+
/* global.css などで適切な @layer で定義すること */
|
|
143
|
+
@layer lism-base {
|
|
144
|
+
:root {
|
|
145
|
+
--brand: #c00;
|
|
146
|
+
--link-c: #0066cc;
|
|
147
|
+
--fw--bold: 700;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### コンポーネント CSS
|
|
153
|
+
|
|
154
|
+
コンポーネント固有のスタイルは、そのコンポーネントを定義しているファイルに紐づけます。
|
|
155
|
+
|
|
156
|
+
- `.jsx` / `.tsx` ファイル: CSS ファイルを `import` する
|
|
157
|
+
- `.astro` ファイル: `import` するか、コンポーネントファイル内の `<style>` タグに記述
|
|
158
|
+
|
|
159
|
+
```css
|
|
160
|
+
/* コンポーネント用CSS は lism-component 内に定義する */
|
|
161
|
+
@layer lism-component {
|
|
162
|
+
.c--yourComponent {
|
|
163
|
+
...
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Primitive クラス
|
|
2
|
+
|
|
3
|
+
Lism CSS では、レイアウトを組み立てる小さな積み木として **Primitive クラス**(`is--` / `l--` / `a--`)を提供します。これらはすべて `@layer lism-primitive` に属します(サブレイヤーは `trait` / `layout` / `atomic`)。
|
|
4
|
+
|
|
5
|
+
具体的な UI 部品は **Component クラス**(`c--`)として `@layer lism-component` に配置されますが、コアの `lism-css` には含まれず、`@lism-css/ui` パッケージやユーザー定義として提供されます。
|
|
6
|
+
|
|
7
|
+
## TOC
|
|
8
|
+
|
|
9
|
+
- [プレフィックス一覧](#プレフィックス一覧)
|
|
10
|
+
- [Trait Primitive(`is--`)](#trait-primitiveis--)
|
|
11
|
+
- [Layout Primitive(`l--`)](#layout-primitivel--)
|
|
12
|
+
- [Atomic Primitive(`a--`)](#atomic-primitivea--)
|
|
13
|
+
- [Component(`c--`)](#componentc--)
|
|
14
|
+
|
|
15
|
+
[詳細](https://lism-css.com/docs/primitives/)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## プレフィックス一覧
|
|
20
|
+
|
|
21
|
+
| プレフィックス | 種類 | サブレイヤー | 役割 |
|
|
22
|
+
|--------------|------|------------|------|
|
|
23
|
+
| `is--` | Trait Primitive | `lism-primitive.trait` | 要素に静的な構造的特性を付与する汎用クラス |
|
|
24
|
+
| `l--` | Layout Primitive | `lism-primitive.layout` | レイアウトの構成単位となる Primitive |
|
|
25
|
+
| `a--` | Atomic Primitive | `lism-primitive.atomic` | レイアウトの最小単位(アイコン・区切り線等) |
|
|
26
|
+
| `c--` | Component | `lism-component` | BEM 構造を持つ具体的な UI 部品 |
|
|
27
|
+
|
|
28
|
+
**併用ルール:**
|
|
29
|
+
- `is--` は他のすべての Primitive / Component と併用可能(複数の `is--` 同士もOK)
|
|
30
|
+
- `l--` と `c--` は併用可能(例: `class="l--flex c--nav"`)
|
|
31
|
+
- 同カテゴリ内の併用は不可(例: `l--flex` と `l--grid` は同要素に付けない)
|
|
32
|
+
- `c--` のみ Modifier との併記が可能(`.c--button.c--button--outline`)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Trait Primitive(`is--`)
|
|
36
|
+
|
|
37
|
+
[詳細](https://lism-css.com/docs/primitives/#trait-primitives)
|
|
38
|
+
|
|
39
|
+
要素に**静的な構造的特性 (trait)** を付与するクラスです。他の Primitive / Component と自由に組み合わせられます。
|
|
40
|
+
|
|
41
|
+
| クラス | 用途 |
|
|
42
|
+
|--------|------|
|
|
43
|
+
| `is--container` | コンテナクエリの基準要素を定義する(`container-type: inline-size`を付与する)。Lism のレスポンシブ機能の判定基準となるラッパーに付与する |
|
|
44
|
+
| `is--wrapper` | 直下の子要素のコンテンツ幅を一括で制限する。`-contentSize:s` / `-contentSize:l` で事前定義したプリセットサイズを指定可能(デフォルト: `--sz--m`)。セクション・ヘッダー・フッター・記事コンテンツなどで、共通したコンテンツ幅を使用する |
|
|
45
|
+
| `is--layer` | 親要素全体に被さる絶対配置レイヤー(`position: absolute; inset: 0;`)。背景画像・カラーオーバーレイ・フィルターレイヤー・コンテンツ等を重ねて表示する |
|
|
46
|
+
| `is--boxLink` | ボックス全体をクリッカブルなリンク領域にする。自身を`a`タグにして利用するか、もしくは自身を`div`にして内部の`a`タグに`is--coverLink`を付与して使う |
|
|
47
|
+
| `is--coverLink` | 親要素全体に被さるクリック領域を持つリンク(`::before` を `inset: 0` で広げる)。`is--boxLink` と併用する |
|
|
48
|
+
| `is--vertical` | 縦書きモードを定義する(`writing-mode: var(--vertical-mode)`) |
|
|
49
|
+
| `is--skipFlow` | `l--flow` 直下で使用し、次の兄弟要素のフロー余白をゼロにする。`l--flow`の中にあるが`position:absolute`にしたい要素などに使用する |
|
|
50
|
+
| `is--side` | `l--sideMain` 直下で使用し、サイド側の要素であることを示す |
|
|
51
|
+
|
|
52
|
+
Lism コンポーネントでは `isContainer`, `isLayer` 等の Props として利用できます。
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
## Layout Primitive(`l--`)
|
|
56
|
+
|
|
57
|
+
レイアウト構造を定義するメインの Primitive 群です。
|
|
58
|
+
|
|
59
|
+
| クラス | 用途 |
|
|
60
|
+
|--------|-------------|
|
|
61
|
+
| `l--box` | 汎用ボックス |
|
|
62
|
+
| `l--flex` | 横方向の基本的なFlexboxレイアウト |
|
|
63
|
+
| `l--stack` | 縦方向の縦積みFlexboxレイアウト(`flex-direction: column`)。 |
|
|
64
|
+
| `l--cluster` | タグの表示UIなど、複数要素を水平に並べて配置し、数が多ければ折り返すようなレイアウト。(`flex-wrap: wrap; align-items: center`) |
|
|
65
|
+
| `l--grid` | 基本的なGridレイアウト。 |
|
|
66
|
+
| `l--center` | 要素を縦横中央に配置するレイアウト(`place-content: center; place-items: center`) |
|
|
67
|
+
| `l--flow` | 記事コンテンツなどのフローレイアウト。子要素間の余白を `margin-block-start` で管理する。 |
|
|
68
|
+
| `l--frame` | アスペクト比や高さが固定されたメディア要素を配置する。直下のメディア要素に `object-fit: cover` を付与する。 |
|
|
69
|
+
| `l--columns` | `repeat`と`minmax(0, 1fr))`を使ったカラムレイアウト。レスポンシブ対応の`--cols`用のProperty Classでカラム数の切り替え可能。 |
|
|
70
|
+
| `l--tileGrid` | `--cols`だけではなく`--rows`も組み合わせた均等タイルグリッド(`grid-template: repeat(var(--rows,1), minmax(0, 1fr)) / repeat(var(--cols,1), minmax(0, 1fr))`) |
|
|
71
|
+
| `l--fluidCols` | ブレイクポイントに依存せず、自動段組のできる流動カラムレイアウト。`--cols: 16em`のようにして最小維持幅を指定できる。 |
|
|
72
|
+
| `l--sideMain` | 画像とコンテンツ、メインエリアとサイドバーなどの「"Side" + "Main"」に分かれ、横並びと縦並びが切り替わるレイアウト。"Main"が`--mainW`で指定したサイズ以上の横幅を維持できる範囲内で横並びを維持し、下回る場合は縦並びへ自動で切り替わる。横並びの間の"Side"の横幅は`--sideW`で指定する。 |
|
|
73
|
+
| `l--switchCols` | 任意のサイズで一括カラム切り替えができるカラムレイアウト。`--breakSize` で制御 |
|
|
74
|
+
|
|
75
|
+
それぞれ対応するLismコンポーネント(`<Flex>`, `<Stack>`, `<Cluster>` 等)があります。
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## Atomic Primitive(`a--`)
|
|
79
|
+
|
|
80
|
+
レイアウト構成物の最小単位となる Primitive です。
|
|
81
|
+
|
|
82
|
+
| クラス | 用途 |
|
|
83
|
+
|--------|------|
|
|
84
|
+
| `a--icon` | SVG アイコン。`flex-shrink: 0`, デフォルトサイズ `1em` |
|
|
85
|
+
| `a--divider` | 区切り線。`--bdc`, `--bds`, `--bdw` 変数でカスタマイズ |
|
|
86
|
+
| `a--spacer` | 空白要素(`min-height: 1px; min-width: 1px`) |
|
|
87
|
+
| `a--decorator` | 装飾用要素(SCSS定義なし、クラス名のみ出力) |
|
|
88
|
+
|
|
89
|
+
それぞれ対応するコンポーネント(`<Icon>`, `<Divider>`, `<Spacer>`, `<Decorator>`)があります。
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## Component(`c--`)
|
|
93
|
+
|
|
94
|
+
`c--` プレフィックスで定義する **Component クラス** は、Primitive を組み合わせて作られた具体的な UI 部品です。`@layer lism-component` に配置され、コアの `lism-css` には含まれず、`@lism-css/ui` パッケージやユーザー定義として提供されます。
|
|
95
|
+
|
|
96
|
+
`c--` クラスは BEM 構造(Block / Modifier / Element)を持つことができ、それぞれ次の形式で定義します。
|
|
97
|
+
|
|
98
|
+
| 分類 | 形式 | 例 |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| Block | `.c--{name}` | `.c--button`, `.c--card` |
|
|
101
|
+
| Modifier | `.c--{name}--{modifier}` | `.c--button--outline` |
|
|
102
|
+
| Element | `.c--{name}_{element}` | `.c--card_header`, `.c--card_body` |
|
|
103
|
+
|
|
104
|
+
- Modifier は Block と併記して使用: `.c--button.c--button--outline`
|
|
105
|
+
- Element は `_`(アンダースコア)一つ区切り
|
|
106
|
+
- Block 同士の併用(`.c--xxx.c--yyy`)は基本 NG。ただし次は許容される:
|
|
107
|
+
- Block と自身の Modifier: `.c--xxx.c--xxx--variant`
|
|
108
|
+
- Block と他 Block の Element: `.c--xxx.c--yyy_elem`
|
|
109
|
+
|
|
110
|
+
`c--`を使った独自コンポーネントを使う場合でも、他の Primitive クラス(`.l--`, `is--`)や Property Class(`-{prop}:{value}`)との組み合わせを前提とした設計にすることでCSSの記述量を削減できます。`c--`クラスにスタイルが全くなく、HTML側での可視性を高める名前付けのためだけに利用しても構いません。
|
|
111
|
+
|
|
112
|
+
### 作成例
|
|
113
|
+
|
|
114
|
+
`l--stack` と併用する前提でのカスタムクラス例
|
|
115
|
+
|
|
116
|
+
```css
|
|
117
|
+
@layer lism-component {
|
|
118
|
+
.c--myCard {
|
|
119
|
+
gap: var(--s20);
|
|
120
|
+
padding: var(--s30);
|
|
121
|
+
border-radius: var(--bdrs--20);
|
|
122
|
+
box-shadow: var(--bxsh--20);
|
|
123
|
+
border: 1px solid currentColor;
|
|
124
|
+
/* ... */
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<div class="c--myCard l--stack">
|
|
131
|
+
...
|
|
132
|
+
</div>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
素のHTMLサイトではこのように`c--`クラスにCSSを書いてスタイリングしても大丈夫ですが、Reactなどでコンポーネントを作成できる場合は、特別な理由がない限りProperty Classを活用してください。
|
|
136
|
+
|
|
137
|
+
```jsx
|
|
138
|
+
export default function MyCard(props) {
|
|
139
|
+
return <Stack lismClass="c--myCard" g="20" p="30" bdrs="20" bxsh="20" bd {...props} />;
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
```css
|
|
143
|
+
@layer lism-component {
|
|
144
|
+
.c--myCard {
|
|
145
|
+
/* 複雑なスタイルあれば css で書く */
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|