@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,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lism-css-guide
|
|
3
|
+
description: "Lism CSS の実装ガイド。HTML・CSS・SCSSの編集、UIやページレイアウトの実装・コーディング、JSX・React・Astroでコンポーネントを実装・編集する時に参照。ユーティリティクラス・デザイントークン・レイアウトプリミティブ・命名規則・CSSのLayer規則・レスポンシブ対応・ベーススタイリングのルール・CSS設計を提供する。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Lism CSS Best Practices
|
|
7
|
+
|
|
8
|
+
このスキルは、「Lism CSS」によるCSS設計理論の全体像と、実装時のベストプラクティスに関するガイドを提供します。
|
|
9
|
+
|
|
10
|
+
調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
|
|
11
|
+
|
|
12
|
+
> **バージョン情報:** このガイドは `lism-css@0.13.0` / `@lism-css/ui@0.12.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
|
|
13
|
+
|
|
14
|
+
公式ドキュメント: https://lism-css.com/docs/overview/
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## インストール
|
|
18
|
+
|
|
19
|
+
### CDNでCSSファイルのみ読み込む場合
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<link href="https://cdn.jsdelivr.net/npm/lism-css@0.13.0/dist/css/main.css" rel="stylesheet" />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### npm パッケージ
|
|
26
|
+
|
|
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 で提供。
|
|
29
|
+
|
|
30
|
+
### CSS 読み込み
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import 'lism-css/main.css';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### コンポーネント読み込み例
|
|
37
|
+
|
|
38
|
+
```jsx
|
|
39
|
+
// React
|
|
40
|
+
import { Flex, Stack, Grid, Columns } from 'lism-css/react';
|
|
41
|
+
import { Accordion, Tabs, Button } from '@lism-css/ui/react';
|
|
42
|
+
|
|
43
|
+
// Astro
|
|
44
|
+
import { Flex, Stack, Grid, Columns } from 'lism-css/astro';
|
|
45
|
+
import { Accordion, Tabs, Button } from '@lism-css/ui/astro';
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## 実装ルール
|
|
50
|
+
|
|
51
|
+
### 基本方針: できる限りLism CSSの用意しているクラス・CSS変数・コンポーネントを使って書く
|
|
52
|
+
|
|
53
|
+
まずは以下のチェックリストを確認しながら、Lism CSS でできることが何かを考えてから実装方針を立ててください。
|
|
54
|
+
|
|
55
|
+
- `l--`,`a--`,`is--` などの Primitive Class や `c--` などの Component Class を用いることができるか?(React, Astroの場合は `Lism`, `Stack`, `Flex`, `Columns` 等のコンポーネントを利用して構築できるか?)
|
|
56
|
+
- Lism の用意している `set--`系クラス、`u--`系クラスは使えないか?
|
|
57
|
+
- Property Class (`-{prop}:{value}` or `<Lism prop="value">`))を使ってスタイリングできるか?
|
|
58
|
+
- 値をレスポンシブに切り替える時は Lism の Property Class (`-{prop}_{bp}` or `<Lism prop={[...]}>`)を使って実装できるか?
|
|
59
|
+
- カラー・余白・フォントサイズ・タイポグラフィ・行間(ハーフレディング)・サイズ・角丸・シャドウなどはトークン値を流用できないか?
|
|
60
|
+
- その他、Lismが用意するCSS変数を活用できないか?
|
|
61
|
+
|
|
62
|
+
### ネイティブCSS で書くもの(必要に応じて適切な `@layer` 内で書くこと)
|
|
63
|
+
|
|
64
|
+
- Lismにないアニメーションやhoverエフェクト(適宜クラスを追加して使用する)
|
|
65
|
+
- 独自コンポーネントの実装に合わせた`c--`クラス(`@layer lism-component`内で定義する)
|
|
66
|
+
- 複雑なセレクタ(`:nth-child`, `::before`, `::after` 等)を使用する必要があるスタイル
|
|
67
|
+
- カスタムプロパティを使った独自の計算式が必要なスタイル
|
|
68
|
+
- その他、Lism のトークンやプリミティブでカバーできない特殊なスタイル
|
|
69
|
+
|
|
70
|
+
### コンポーネント化のルール
|
|
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`クラス) などの指定でコンテンツ幅を管理することができます。
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## 詳細リファレンス
|
|
99
|
+
|
|
100
|
+
このスキルには以下の詳細ファイルが含まれます。必要に応じて参照してください。
|
|
101
|
+
|
|
102
|
+
- [tokens.md](./tokens.md) — Lismで利用できるデザイントークンとCSS変数。(余白・フォントサイズ・タイポグラフィ・角丸・影・カラー・不透明度)
|
|
103
|
+
- [css-rules.md](./css-rules.md) — CSS設計の概要。(Layer構造・クラスの分類・命名規則・プレフィックスのつけ方・カスタムCSSの追加ルール)
|
|
104
|
+
- [base-styles.md](./base-styles.md) — HTML要素のベーススタイリング。(Reset CSSやHTML要素の基本スタイルをカスタマイズできるCSS変数)
|
|
105
|
+
- [set-class.md](./set-class.md) — ベーススタイル・変数セットに使用する`set--` クラスの一覧と用途。
|
|
106
|
+
- [primitive-class.md](./primitive-class.md) — レイアウトを組み立てる Primitive クラス(`is--`/`l--`/`a--`)と Component クラス(`c--`)の一覧と用途。
|
|
107
|
+
- [utility-class.md](./utility-class.md) — 具体的な用途・装飾・機能を持つユーティリティクラス(`u--` クラス)の一覧と用途。
|
|
108
|
+
- [property-class.md](./property-class.md) — 単一のCSSプロパティに対応するProperty Class(`-{prop}:{value}`形式のクラス)の一覧・記法。
|
|
109
|
+
- [prop-responsive.md](./prop-responsive.md) — レスポンシブ対応(ブレークポイント・コンテナクエリ)の書き方・仕様。
|
|
110
|
+
- [components-core.md](./components-core.md) — `lism-css`パッケージに含まれるコアコンポーネントの一覧と用途。(React, Astroで使える`<Lism>`・Lism Props・getLismProps )
|
|
111
|
+
- [components-ui.md](./components-ui.md) — `@lism-css/ui`パッケージに含まれるUIコンポーネント(Accordion・Modal・Tabs・Button 等)の Props・構造とCLIコマンドによるインストール方法。
|
|
112
|
+
|
|
113
|
+
これら各ファイルの冒頭にはTOC(目次)があり、セクションごとの詳細URL・ソースURLがまとめて記載されています。
|
|
114
|
+
|
|
115
|
+
### Primitive 単位の詳細リファレンス
|
|
116
|
+
|
|
117
|
+
`l--*` / `is--*` / `a--*` クラスや対応するコンポーネント(`<Flex>`, `<Grid>` 等)を使ってUIを実装する時は、以下の Primitive 別ファイルを参照してください。
|
|
118
|
+
|
|
119
|
+
**Layout Primitives**
|
|
120
|
+
|
|
121
|
+
- `l--box` / `<Box>`: [primitives/l--box.md](./primitives/l--box.md)
|
|
122
|
+
- `l--flex` / `<Flex>`: [primitives/l--flex.md](./primitives/l--flex.md)
|
|
123
|
+
- `l--stack` / `<Stack>`: [primitives/l--stack.md](./primitives/l--stack.md)
|
|
124
|
+
- `l--cluster` / `<Cluster>`: [primitives/l--cluster.md](./primitives/l--cluster.md)
|
|
125
|
+
- `l--grid` / `<Grid>`: [primitives/l--grid.md](./primitives/l--grid.md)
|
|
126
|
+
- `l--flow` / `<Flow>`: [primitives/l--flow.md](./primitives/l--flow.md)
|
|
127
|
+
- `l--center` / `<Center>`: [primitives/l--center.md](./primitives/l--center.md)
|
|
128
|
+
- `l--frame` / `<Frame>`: [primitives/l--frame.md](./primitives/l--frame.md)
|
|
129
|
+
- `l--columns` / `<Columns>`: [primitives/l--columns.md](./primitives/l--columns.md)
|
|
130
|
+
- `l--tileGrid` / `<TileGrid>`: [primitives/l--tileGrid.md](./primitives/l--tileGrid.md)
|
|
131
|
+
- `l--fluidCols` / `<FluidCols>`: [primitives/l--fluidCols.md](./primitives/l--fluidCols.md)
|
|
132
|
+
- `l--switchCols` / `<SwitchCols>`: [primitives/l--switchCols.md](./primitives/l--switchCols.md)
|
|
133
|
+
- `l--sideMain` / `<SideMain>`: [primitives/l--sideMain.md](./primitives/l--sideMain.md)
|
|
134
|
+
|
|
135
|
+
**Trait Primitives**
|
|
136
|
+
|
|
137
|
+
- `is--container` / `<Container>`: [primitives/is--container.md](./primitives/is--container.md)
|
|
138
|
+
- `is--wrapper` / `<Wrapper>`: [primitives/is--wrapper.md](./primitives/is--wrapper.md)
|
|
139
|
+
- `is--layer` / `<Layer>`: [primitives/is--layer.md](./primitives/is--layer.md)
|
|
140
|
+
- `is--boxLink` / `<BoxLink>`: [primitives/is--boxLink.md](./primitives/is--boxLink.md)
|
|
141
|
+
- `is--vertical`: [primitives/is--vertical.md](./primitives/is--vertical.md)
|
|
142
|
+
|
|
143
|
+
**Atomic Primitives**
|
|
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)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
## このスキルファイル自身のアップデート方法
|
|
152
|
+
|
|
153
|
+
`skills add lism-css/lism-css` を再実行してください。
|
|
154
|
+
更新があるか確認したい場合は、[GitHub リポジトリ](https://github.com/lism-css/lism-css/tree/main/.claude/skills/lism-css-guide) を直接チェックしてください。
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ベーススタイリング
|
|
2
|
+
|
|
3
|
+
Lism CSS は `@layer lism-base` レイヤーで、Reset CSS・HTML要素のベーススタイル・CSS変数(トークン)を定義しています。
|
|
4
|
+
|
|
5
|
+
> ここではHTML要素のベーススタイリングについての概要を記載しています。トークン定義については [tokens.md](./tokens.md) を参照してください。
|
|
6
|
+
|
|
7
|
+
## TOC
|
|
8
|
+
|
|
9
|
+
- [Reset CSS](#reset-css)
|
|
10
|
+
- [HTML 要素のベーススタイル](#html-要素のベーススタイル)
|
|
11
|
+
|
|
12
|
+
[詳細](https://lism-css.com/docs/base-styles/)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Reset CSS
|
|
17
|
+
|
|
18
|
+
ソース: [`reset.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/reset.scss)
|
|
19
|
+
|
|
20
|
+
`@layer lism-base.reset` として定義される最小限のリセットスタイルです。
|
|
21
|
+
|
|
22
|
+
- `box-sizing: border-box` の全要素適用
|
|
23
|
+
- `margin: 0` の全要素適用(`<dialog>` を除く)
|
|
24
|
+
- `overflow: clip` を `<html>` に適用(横スクロール防止)
|
|
25
|
+
- `body` に `min-height: 100dvh`
|
|
26
|
+
- メディア要素(`img`, `video`, `iframe`)に `max-inline-size: 100%`, `block-size: auto`
|
|
27
|
+
- フォーム要素のフォント・カラー継承
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## HTML 要素のベーススタイル
|
|
31
|
+
|
|
32
|
+
ソース: [`_html.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/base/_html.scss)
|
|
33
|
+
|
|
34
|
+
Reset CSS に加え、`@layer lism-base` 内で HTML タグに基本スタイルを適用しています。
|
|
35
|
+
その中で、専用のCSS変数を使って値を調整できるようにしている部分をここでは紹介します。具体的なスタイルの詳細は、githubのソースコードを読んでください。
|
|
36
|
+
|
|
37
|
+
### 全要素の行間
|
|
38
|
+
|
|
39
|
+
| 変数 | 用途 |
|
|
40
|
+
|------|------|
|
|
41
|
+
| `--hl` | half-leading(行間の上下余白量)。`line-height: calc(1em + var(--hl) * 2)` として全要素に適用 |
|
|
42
|
+
|
|
43
|
+
### body
|
|
44
|
+
|
|
45
|
+
| 変数 | 用途 |
|
|
46
|
+
|------|------|
|
|
47
|
+
| `--fz--base` | ベースフォントサイズ |
|
|
48
|
+
| `--ff--base` | ベースフォントファミリー |
|
|
49
|
+
| `--lts--base` | ベース字間 |
|
|
50
|
+
| `--text` | テキスト色 |
|
|
51
|
+
| `--base` | 背景色 |
|
|
52
|
+
| `--under-offset` | `text-underline-offset`(デフォルト: `0.125em`) |
|
|
53
|
+
|
|
54
|
+
### 見出し(h1〜h6)
|
|
55
|
+
|
|
56
|
+
| 変数 | 用途 |
|
|
57
|
+
|------|------|
|
|
58
|
+
| `--headings-ff` | 全見出し共通のフォントファミリー(デフォルト: `inherit`) |
|
|
59
|
+
| `--headings-fw` | 全見出し共通のフォントウェイト(デフォルト: `var(--fw--bold)`) |
|
|
60
|
+
|
|
61
|
+
各レベルのフォントサイズは `--fz--3xl`(h1)〜 `--fz--m`(h5, h6)がセットされている。
|
|
62
|
+
|
|
63
|
+
### リンク(a)
|
|
64
|
+
|
|
65
|
+
| 変数 | フォールバック | 用途 |
|
|
66
|
+
|------|------------|------|
|
|
67
|
+
| `--link-c` | `var(--link)` | リンクテキスト色 |
|
|
68
|
+
| `--link-td` | `underline` | テキスト装飾の種類 |
|
|
69
|
+
| `--link-td-thickness` | `auto` | 下線の太さ |
|
|
70
|
+
| `--link-td-color` | `currentColor` | 下線の色 |
|
|
71
|
+
|
|
72
|
+
### リスト(ul, ol)
|
|
73
|
+
|
|
74
|
+
| 変数 | フォールバック | 用途 |
|
|
75
|
+
|------|------------|------|
|
|
76
|
+
| `--list-px-s` | `var(--s30)` | リストの `padding-inline-start` |
|
|
77
|
+
|
|
78
|
+
### テーブル(table, td, th)
|
|
79
|
+
|
|
80
|
+
| 変数 | フォールバック | 用途 |
|
|
81
|
+
|------|------------|------|
|
|
82
|
+
| `--td-c` | `inherit` | セルのテキスト色 |
|
|
83
|
+
| `--td-bgc` | `transparent` | セルの背景色 |
|
|
84
|
+
| `--td-p` | `var(--s10)` | セルのパディング |
|
|
85
|
+
| `--td-min-sz` | `initial` | セルの最小幅 |
|
|
86
|
+
| `--th-c` | `var(--td-c)` | 見出しセルのテキスト色 |
|
|
87
|
+
| `--th-bgc` | `var(--td-bgc)` | 見出しセルの背景色 |
|
|
88
|
+
| `--th-p` | `var(--td-p)` | 見出しセルのパディング |
|
|
89
|
+
| `--th-min-sz` | `var(--td-min-sz)` | 見出しセルの最小幅 |
|
|
90
|
+
|
|
91
|
+
`th` は `td` の変数をフォールバックとして参照するため、`--td-*` だけで両方に反映される。
|
|
92
|
+
|
|
93
|
+
### フォーム要素
|
|
94
|
+
|
|
95
|
+
| 変数 | フォールバック | 用途 |
|
|
96
|
+
|------|------------|------|
|
|
97
|
+
| `--controls-bgc` | `var(--base-2)` | 背景色 |
|
|
98
|
+
| `--controls-bdc` | `var(--divider)` | ボーダー色 |
|
|
99
|
+
| `--controls-p` | `var(--s5) var(--s10)` | パディング |
|
|
100
|
+
| `--controls-bdrs` | `var(--bdrs--10)` | 角丸 |
|
|
101
|
+
|
|
102
|
+
### その他
|
|
103
|
+
|
|
104
|
+
| 変数 | 対象 | 用途 |
|
|
105
|
+
|------|------|------|
|
|
106
|
+
| `--focus-offset` | `:focus-visible` | アウトラインのオフセット(デフォルト: `0px`) |
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# コンポーネントシステム
|
|
2
|
+
|
|
3
|
+
Lism CSS(`lism-css`パッケージ)は React / Astro 向けのコンポーネントを提供しています。
|
|
4
|
+
|
|
5
|
+
```jsx
|
|
6
|
+
// React でのimport
|
|
7
|
+
import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/react';
|
|
8
|
+
|
|
9
|
+
// Astro でのimport
|
|
10
|
+
import { Lism, Box, Flex, Stack, Grid, Text, Media } from 'lism-css/astro';
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## TOC
|
|
14
|
+
|
|
15
|
+
- [コアコンポーネント: `<Lism>`](#コアコンポーネント-lism)
|
|
16
|
+
- [Lism Props](#lism-props)
|
|
17
|
+
- [セマンティックコンポーネント](#セマンティックコンポーネント)
|
|
18
|
+
- [Atomic Primitives](#atomic-primitives)
|
|
19
|
+
- [Trait Primitives](#trait-primitives)
|
|
20
|
+
- [Layout Primitives](#layout-primitives)
|
|
21
|
+
- [`getLismProps()`](#getlismprops--外部コンポーネントとの連携)
|
|
22
|
+
|
|
23
|
+
[詳細](https://lism-css.com/docs/core-components/Lism/)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## コアコンポーネント: `<Lism>`
|
|
28
|
+
|
|
29
|
+
`Lism` はすべてのコンポーネントの基盤です。Lism Props を受け取り、CSS クラスとインラインスタイルに変換して HTML を出力します。
|
|
30
|
+
|
|
31
|
+
```jsx
|
|
32
|
+
<Lism p="20" fz="l" c="brand">コンテンツ</Lism>
|
|
33
|
+
```
|
|
34
|
+
↓ 出力
|
|
35
|
+
```html
|
|
36
|
+
<div class="-p:20 -fz:l -c:brand">コンテンツ</div>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Lism Props
|
|
41
|
+
|
|
42
|
+
ソース: [props.ts](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts)
|
|
43
|
+
|
|
44
|
+
`<Lism>` で受け取れる Lism CSS 専用プロパティを **Lism Props** と呼びます。
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### 共通 Props
|
|
48
|
+
|
|
49
|
+
すべての Lism コンポーネントで使えるpropsです。
|
|
50
|
+
|
|
51
|
+
| Prop | 説明 | 例 |
|
|
52
|
+
|------|------|-----|
|
|
53
|
+
| `as` | レンダリングする HTML 要素または外部コンポーネントを指定(デフォルト: `"div"`) | `as="section"`, `as={Image}` |
|
|
54
|
+
| `lismClass` | コンポーネントの主要クラス名を指定。(`c--{lismClass}`) | `lismClass="c--myComponent"` |
|
|
55
|
+
| `variant` | `lismClass` に対するバリエーションクラスを指定。(`c--{lismClass}--{variant}`) | `variant="secondary"` |
|
|
56
|
+
| `layout` | レイアウトプリミティブ(`l--{layout}`)を指定。 | `layout="flow"` |
|
|
57
|
+
| `set` | セットクラス(`set--{value}`)を指定。スペース区切りで複数指定可。値の先頭に `-` を付けると除外 | `set="gutter"`, `set="transition plain"`, `set="-plain"` |
|
|
58
|
+
| `util` | ユーティリティクラス(`u--{value}`)を指定。`set` と同様に複数指定・`-` prefix 除外が可能 | `util="cbox"`, `util="cbox trim"`, `util="-trim"` |
|
|
59
|
+
| `exProps` | Lism Propsの処理をスキップして外部コンポーネントに直接渡すpropsオブジェクト | `exProps={{ size: '1em' }}` |
|
|
60
|
+
|
|
61
|
+
```jsx
|
|
62
|
+
// as で HTML 要素を指定
|
|
63
|
+
<Lism as="section" p="30">...</Lism>
|
|
64
|
+
// → <section class="-p:30">...</section>
|
|
65
|
+
|
|
66
|
+
// as で外部コンポーネントを指定
|
|
67
|
+
<Media as={Image} src="..." p="20" bd />
|
|
68
|
+
// → Image コンポーネントに { className: '-p:20 -bd' } が渡される
|
|
69
|
+
|
|
70
|
+
// lismClass でコンポーネントクラスを付与
|
|
71
|
+
<Lism lismClass="c--myComponent" p="10">...</Lism>
|
|
72
|
+
// → <div class="c--myComponent -p:10">...</div>
|
|
73
|
+
|
|
74
|
+
// variant でバリエーション
|
|
75
|
+
<Lism lismClass="c--myComponent" variant="secondary">...</Lism>
|
|
76
|
+
// → <div class="c--myComponent c--myComponent--secondary">...</div>
|
|
77
|
+
|
|
78
|
+
// exProps で外部コンポーネント用プロパティを明示的に分離
|
|
79
|
+
<Icon as={HogeIcon} exProps={{ size: "1em" }} p="10" fz="l">...</Icon>
|
|
80
|
+
// → p, fz は Lism が処理、size は HogeIcon に直接渡される
|
|
81
|
+
|
|
82
|
+
// set でセットクラスを付与(layout と同じ要領)
|
|
83
|
+
<Box set="shadow" p="30">...</Box>
|
|
84
|
+
// → <div class="l--box set--shadow -p:30">...</div>
|
|
85
|
+
|
|
86
|
+
// set を複数指定(スペース区切り)
|
|
87
|
+
<Stack set="shadow hov" p="30">...</Stack>
|
|
88
|
+
// → <div class="l--stack set--shadow set--hov -p:30">...</div>
|
|
89
|
+
|
|
90
|
+
// `-` prefix で除外(コンポーネント内部で適用済みの set を打ち消す用途)
|
|
91
|
+
<AccordionButton set="-plain">...</AccordionButton>
|
|
92
|
+
|
|
93
|
+
// util でユーティリティクラス(u--)を付与
|
|
94
|
+
<Box util="cbox" keycolor="red" p="20">...</Box>
|
|
95
|
+
// → <div class="l--box u--cbox -p:20" style="--keycolor: var(--red)">...</div>
|
|
96
|
+
|
|
97
|
+
// util を複数指定・除外も set と同じ記法
|
|
98
|
+
<Lism util="cbox trim">...</Lism>
|
|
99
|
+
<Lism util="cbox -trim">...</Lism>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### CSS Props
|
|
104
|
+
|
|
105
|
+
主要な CSS プロパティに対して省略記法(Shorthand)で指定できます。値に応じて **Property Class**(`-{prop}:{value}`)やインラインスタイルに変換されます。
|
|
106
|
+
|
|
107
|
+
各プロパティで受け付けるトークン値・プリセット値の詳細は [property-class.md](./property-class.md) を参照。
|
|
108
|
+
もしくは、[定義ファイルの`props.ts`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/config/defaults/props.ts) を読んでください。
|
|
109
|
+
|
|
110
|
+
`prop={value}`で指定した値(`value`)によって、基本的な出力は以下のように分類されます。
|
|
111
|
+
|
|
112
|
+
| 値 | 出力形式 | 例 |
|
|
113
|
+
|------|------|-----|
|
|
114
|
+
| トークン値・プリセット値 | `-{prop}:{value}` クラスのみ | `fz='l'` → `class="-fz:l"` |
|
|
115
|
+
| `true` または `"-"` | `-{prop}` クラスのみ(変数なし) | `bd` / `bd='-'` → `class="-bd"` |
|
|
116
|
+
| `:` で始まる値 | 強制的にユーティリティクラス化 | `p=':hoge'` → `class="-p:hoge"` |
|
|
117
|
+
| その他の値(レスポンシブ対応プロパティ) | `-{prop}` + `--{prop}` | `fz='20px'` → `class="-fz"` + `style="--fz:20px"` |
|
|
118
|
+
| その他の値(レスポンシブ非対応プロパティ) | `style` 属性に直接出力 | `o='0.7'` → `style="opacity:0.7"` |
|
|
119
|
+
| その他の値(変数プロパティ) | `--{prop}` | `bdw='2px'` → `style="--bdw:2px"` (`border-width`としては出力されない) |
|
|
120
|
+
| レスポンシブ指定値 | 上記いずれかのベース出力 + `-{prop}_{bp}` + `--{prop}_{bp}` | `p={[10,20]}` → `class="-p:10 -p_sm"` + `style="--p_sm:var(--s20)"`|
|
|
121
|
+
|
|
122
|
+
補足:
|
|
123
|
+
- **レスポンシブ対応プロパティ**かどうかは、 `props.ts`で`bp: 1`がセットされているかどうかで分かります。
|
|
124
|
+
- **変数プロパティ**とは、`bds`, `bdc`, `bdw`, `keycolor`, `cols`, `rows`といった一部のプロパティ(`props.ts`で`isVar`がセットされているもの)のこと。これらはCSSプロパティがそのままstyle属性に出力されることはなく、常にCSS 変数(`--{prop}`)が使用されます。
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
```jsx
|
|
129
|
+
// トークン値 → クラスのみ
|
|
130
|
+
<Lism fz='l' p='20'>...</Lism>
|
|
131
|
+
// 出力 → <div class="-fz:l -p:20">...</div>
|
|
132
|
+
|
|
133
|
+
// カラートークン(クラス化されていない場合)→ クラス + CSS変数
|
|
134
|
+
<Lism c='red'>...</Lism>
|
|
135
|
+
// 出力 → <div class="-c" style="--c:var(--red)">...</div>
|
|
136
|
+
|
|
137
|
+
// CSS変数のみ出力される特殊パターン
|
|
138
|
+
<Lism bd bdc="#000" bdw="2px">...</Lism>
|
|
139
|
+
// 出力 → <div class="-bd" style="--bdc:#000;--bdw:2px">...</div>
|
|
140
|
+
|
|
141
|
+
// `-` でクラスだけ出力(変数は親から継承したい場合などに使う)
|
|
142
|
+
<Lism p='-' bdrs>...</Lism>
|
|
143
|
+
// 出力 → <div class="-p -bdrs">...</div>
|
|
144
|
+
|
|
145
|
+
// `:` で強制ユーティリティクラス化
|
|
146
|
+
<Lism p=':hoge'>...</Lism>
|
|
147
|
+
// 出力 → <div class="-p:hoge">...</div>
|
|
148
|
+
|
|
149
|
+
// カスタム値(BP対応プロパティ) → クラス + CSS変数
|
|
150
|
+
<Lism fz='20px'>...</Lism>
|
|
151
|
+
// 出力 → <div class="-fz" style="--fz:20px">...</div>
|
|
152
|
+
|
|
153
|
+
// カスタム値(BP非対応プロパティ)→ style属性にプロパティ直書き
|
|
154
|
+
<Lism o='0.7'>...</Lism>
|
|
155
|
+
// 出力 → <div style="opacity:0.7">...</div>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
#### レスポンシブ指定
|
|
160
|
+
|
|
161
|
+
レスポンシブ対応プロパティは、配列またはオブジェクトでブレイクポイント(`sm`,`md`)ごとの値を指定できます。(`lg`は要カスタマイズ)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
```jsx
|
|
165
|
+
// 配列(base → sm → md の順)
|
|
166
|
+
<Lism p={['20', '30', '40']}>...</Lism>
|
|
167
|
+
// <div class="-p:20 -p_sm -p_md" style="--p_sm:var(--s30);--p_md:var(--s40)">...</div>
|
|
168
|
+
|
|
169
|
+
// 途中のBPをスキップ(smを飛ばしてmd のみ指定)
|
|
170
|
+
<Lism p={['20', null, '40']}>...</Lism>
|
|
171
|
+
// → <div class="-p_md" style="--p_md:var(--s40)">...</div>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
デフォルトで**コンテナクエリ**を採用しているため、先祖にコンテナ要素(`is--container`が出力される`<Container>`または`isContainer`の指定)が必要です。
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
### Trait Props
|
|
178
|
+
|
|
179
|
+
Trait Primitives クラス(`is--*`)を出力するためのプロパティ群です。
|
|
180
|
+
|
|
181
|
+
| Prop | 出力クラス |
|
|
182
|
+
|------|-----------|
|
|
183
|
+
| `isWrapper` | `is--wrapper` |
|
|
184
|
+
| `isWrapper="{s\|l}"` | `is--wrapper` + `-contentSize:{s\|l}` |
|
|
185
|
+
| `isWrapper="{value}"` | `is--wrapper` + `-contentSize` + `--contentSize:{value}` |
|
|
186
|
+
| `isLayer` | `is--layer` |
|
|
187
|
+
| `isBoxLink` | `is--boxLink` |
|
|
188
|
+
| `isCoverLink` | `is--coverLink` |
|
|
189
|
+
| `isContainer` | `is--container` |
|
|
190
|
+
| `isSide` | `is--side` |
|
|
191
|
+
| `isSkipFlow` | `is--skipFlow` |
|
|
192
|
+
| `isVertical` | `is--vertical` |
|
|
193
|
+
|
|
194
|
+
```jsx
|
|
195
|
+
// Trait Props の使用例
|
|
196
|
+
<Stack isLayer>背景レイヤー</Stack>
|
|
197
|
+
// → <div class="l--stack is--layer">...</div>
|
|
198
|
+
|
|
199
|
+
<Flex isWrapper="l">コンテンツ</Flex>
|
|
200
|
+
// → <div class="l--flex is--wrapper -contentSize:l">...</div>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
## セマンティックコンポーネント
|
|
205
|
+
|
|
206
|
+
`Lism` の `as` エイリアスとして機能するコンポーネント群です。layout クラスは付与されず、HTML のセマンティクスを表現するために使います。
|
|
207
|
+
|
|
208
|
+
| コンポーネント | デフォルト要素 | 許容タグ |
|
|
209
|
+
|-------------|-------------|---------|
|
|
210
|
+
| `<Text>` | `<p>` | `p`, `div`, `blockquote`, `address`, `figcaption`, `pre` |
|
|
211
|
+
| `<Heading>` | `<h2>` | `h1`〜`h6`(`level` prop で指定) |
|
|
212
|
+
| `<Inline>` | `<span>` | `span`, `em`, `strong`, `small`, `code`, `time`, `i`, `b`, `mark`, `abbr`, `cite`, `kbd` |
|
|
213
|
+
| `<Group>` | `<div>` | `div`, `section`, `article`, `figure`, `nav`, `aside`, `header`, `footer`, `main`, `fieldset`, `hgroup` |
|
|
214
|
+
| `<List>` | `<ul>` | `ul`, `ol`, `dl` |
|
|
215
|
+
| `<Link>` | `<a>`(固定) | — |
|
|
216
|
+
| `<Media>` | `<img>` | `img`, `video`, `iframe`, `picture` |
|
|
217
|
+
|
|
218
|
+
```jsx
|
|
219
|
+
<Heading level="3" fz="xl">見出し</Heading>
|
|
220
|
+
// → <h3 class="-fz:xl">見出し</h3>
|
|
221
|
+
|
|
222
|
+
<Text as="blockquote" p="30">引用文</Text>
|
|
223
|
+
// → <blockquote class="-p:30">引用文</blockquote>
|
|
224
|
+
|
|
225
|
+
<Group as="section" p="40">
|
|
226
|
+
<Text>本文</Text>
|
|
227
|
+
</Group>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Atomic Primitives
|
|
231
|
+
|
|
232
|
+
| コンポーネント | 出力クラス | 用途 |
|
|
233
|
+
|-------------|-----------|------|
|
|
234
|
+
| `<Icon>` | `a--icon` | SVG アイコン・アイコンフォント |
|
|
235
|
+
| `<Spacer>` | `a--spacer` | 空白要素 |
|
|
236
|
+
| `<Divider>` | `a--divider` | 区切り線 |
|
|
237
|
+
| `<Decorator>` | `a--decorator` | 装飾要素(SCSS定義なし、クラス名のみ出力) |
|
|
238
|
+
|
|
239
|
+
各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## Trait Primitives
|
|
243
|
+
|
|
244
|
+
`<Lism isXxx>`のエイリアスコンポーネントです。
|
|
245
|
+
|
|
246
|
+
| コンポーネント | 内部処理 | 出力クラス |
|
|
247
|
+
|-------------|------------|-----------|
|
|
248
|
+
| `<Container>` | `isContainer` | `is--container` |
|
|
249
|
+
| `<Wrapper>` | `isWrapper` | `is--wrapper` |
|
|
250
|
+
| `<Layer>` | `isLayer` | `is--layer` |
|
|
251
|
+
| `<BoxLink>` | `isBoxLink` | `is--boxLink` |
|
|
252
|
+
|
|
253
|
+
各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
## Layout Primitives
|
|
257
|
+
|
|
258
|
+
内部で `layout` prop が固定されており、対応する `l--{layout}` クラスが自動で出力されます。各コンポーネントの専用 Props(`cols`, `rows`, `breakSize`, `sideW`/`mainW`, `flow` など)は、それぞれの詳細ファイルを参照してください。
|
|
259
|
+
|
|
260
|
+
| コンポーネント | 出力クラス |
|
|
261
|
+
|-------------|-----------|
|
|
262
|
+
| `<Box>` | `l--box` |
|
|
263
|
+
| `<Flex>` | `l--flex` |
|
|
264
|
+
| `<Stack>` | `l--stack` |
|
|
265
|
+
| `<Cluster>` | `l--cluster` |
|
|
266
|
+
| `<Grid>` | `l--grid` |
|
|
267
|
+
| `<Flow>` | `l--flow` |
|
|
268
|
+
| `<Center>` | `l--center` |
|
|
269
|
+
| `<Frame>` | `l--frame` |
|
|
270
|
+
| `<Columns>` | `l--columns` |
|
|
271
|
+
| `<TileGrid>` | `l--tileGrid` |
|
|
272
|
+
| `<FluidCols>` | `l--fluidCols` |
|
|
273
|
+
| `<SwitchCols>` | `l--switchCols` |
|
|
274
|
+
| `<SideMain>` | `l--sideMain` |
|
|
275
|
+
|
|
276
|
+
各プリミティブの詳細は SKILL.md の「プリミティブ単位の詳細リファレンス」、または `primitives/` 配下の各ファイルを参照。
|
|
277
|
+
|
|
278
|
+
## `getLismProps()` — 外部コンポーネントとの連携
|
|
279
|
+
|
|
280
|
+
なんらかの理由で`as`に外部コンポーネントを渡せない場合、`getLismProps()` を使うことでも `<Lism>`が処理できるプロパティ群を `className` と `style` に変換することができます。
|
|
281
|
+
|
|
282
|
+
```jsx
|
|
283
|
+
import getLismProps from 'lism-css/lib/getLismProps';
|
|
284
|
+
|
|
285
|
+
function MyComponent({ children }) {
|
|
286
|
+
// Lism Props を getLismProps() で 変換
|
|
287
|
+
const lismProps = getLismProps({ p: '20', fz: 'l', c: 'red' });
|
|
288
|
+
// → { className: '-p:20 -fz:l -c', style: {'--c': 'var(--red)'} }
|
|
289
|
+
|
|
290
|
+
return <div {...lismProps}>{children}</div>;
|
|
291
|
+
}
|
|
292
|
+
```
|