@lism-css/mcp 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/docs-index.json +176 -85
- package/dist/data/guides/SKILL.md +29 -15
- package/dist/data/guides/base-styles.md +2 -0
- package/dist/data/guides/components-core.md +25 -20
- package/dist/data/guides/components-ui.md +16 -23
- package/dist/data/guides/css-rules.md +101 -26
- package/dist/data/guides/customize.md +220 -0
- package/dist/data/guides/naming.md +218 -0
- package/dist/data/guides/primitive-class.md +3 -90
- package/dist/data/guides/primitives/a--decorator.md +3 -5
- package/dist/data/guides/primitives/a--divider.md +4 -11
- package/dist/data/guides/primitives/a--spacer.md +1 -1
- package/dist/data/guides/primitives/l--box.md +1 -1
- package/dist/data/guides/primitives/l--flex.md +1 -1
- package/dist/data/guides/primitives/l--flow.md +1 -1
- package/dist/data/guides/primitives/l--fluidCols.md +31 -28
- package/dist/data/guides/primitives/l--frame.md +1 -1
- package/dist/data/guides/primitives/l--sideMain.md +1 -1
- package/dist/data/guides/prop-responsive.md +28 -3
- package/dist/data/guides/property-class/bd.md +127 -0
- package/dist/data/guides/property-class/hov.md +140 -0
- package/dist/data/guides/property-class/max-sz.md +99 -0
- package/dist/data/guides/property-class.md +52 -86
- package/dist/data/guides/set-class.md +62 -94
- package/dist/data/guides/tokens.md +24 -15
- package/dist/data/guides/trait-class/has--gutter.md +48 -0
- package/dist/data/guides/trait-class/has--mask.md +66 -0
- package/dist/data/guides/trait-class/has--snap.md +68 -0
- package/dist/data/guides/trait-class/has--transition.md +73 -0
- package/dist/data/guides/{primitives → trait-class}/is--boxLink.md +8 -8
- package/dist/data/guides/{primitives → trait-class}/is--container.md +2 -2
- package/dist/data/guides/{primitives → trait-class}/is--layer.md +2 -2
- package/dist/data/guides/{primitives → trait-class}/is--wrapper.md +2 -2
- package/dist/data/guides/trait-class.md +77 -0
- package/dist/data/guides/utility-class.md +0 -1
- package/dist/data/meta.js +2 -2
- package/dist/lib/load-markdown.js +1 -1
- package/dist/lib/search.js +8 -5
- package/dist/tools/get-component.js +7 -6
- package/dist/tools/get-guide.js +1 -1
- package/package.json +2 -2
- package/dist/data/guides/primitives/is--vertical.md +0 -52
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Trait クラス
|
|
2
|
+
|
|
3
|
+
Lism CSS では、要素に対して宣言的に「役割」や「機能」を付与するクラス群を **Trait クラス**(`is--` / `has--`)として定義します。これらは `@layer lism-trait` に属します。
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## TOC
|
|
7
|
+
|
|
8
|
+
- [プレフィックス一覧](#プレフィックス一覧)
|
|
9
|
+
- [`is--` Trait(役割宣言)](#is-- trait役割宣言)
|
|
10
|
+
- [`has--` Trait(機能付与)](#has-- trait機能付与)
|
|
11
|
+
|
|
12
|
+
[詳細](https://lism-css.com/docs/trait-class/)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## プレフィックス一覧
|
|
17
|
+
|
|
18
|
+
| プレフィックス | 種類 | レイヤー | 役割 |
|
|
19
|
+
|--------------|------|---------|------|
|
|
20
|
+
| `is--` | Trait(役割宣言) | `lism-trait` | 要素に「〜である」という役割・存在を宣言する |
|
|
21
|
+
| `has--` | Trait(機能付与) | `lism-trait` | 要素に「〜を持つ」という単一機能を付与する。CSS 変数でカスタマイズ可能 |
|
|
22
|
+
|
|
23
|
+
併用ルールおよび `is--` / `has--` の判定軸は [css-rules.md](./css-rules.md#プレフィックスとクラス分類) を参照してください。
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## `is--` Trait(役割宣言)
|
|
27
|
+
|
|
28
|
+
要素に**役割・存在の宣言**を付与するクラスです。他の Primitive / Component と自由に組み合わせられます。
|
|
29
|
+
|
|
30
|
+
| クラス | 用途 |
|
|
31
|
+
|--------|------|
|
|
32
|
+
| `is--container` | コンテナクエリの基準要素を定義する(`container-type: inline-size`を付与する)。Lism のレスポンシブ機能の判定基準となるラッパーに付与する |
|
|
33
|
+
| `is--wrapper` | 直下の子要素のコンテンツ幅を一括で制限する。`-contentSize:s` / `-contentSize:l` で事前定義したプリセットサイズを指定可能(デフォルト: `--sz--m`)。セクション・ヘッダー・フッター・記事コンテンツなどで、共通したコンテンツ幅を使用する |
|
|
34
|
+
| `is--layer` | 親要素全体に被さる絶対配置レイヤー(`position: absolute; inset: 0;`)。背景画像・カラーオーバーレイ・フィルターレイヤー・コンテンツ等を重ねて表示する |
|
|
35
|
+
| `is--boxLink` | ボックス全体をクリッカブルなリンク領域にする。自身を`a`タグにして利用するか、もしくは自身を`div`にして内部の`a`タグに`is--coverLink`を付与して使う |
|
|
36
|
+
| `is--coverLink` | 親要素全体に被さるクリック領域を持つリンク(`::before` を `inset: 0` で広げる)。`is--boxLink` と併用する |
|
|
37
|
+
| `is--skipFlow` | `l--flow` 直下で使用し、次の兄弟要素のフロー余白をゼロにする。`l--flow`の中にあるが`position:absolute`にしたい要素などに使用する |
|
|
38
|
+
| `is--side` | `l--sideMain` 直下で使用し、サイド側の要素であることを示す |
|
|
39
|
+
|
|
40
|
+
Lism コンポーネントでは `isContainer`, `isLayer` 等の Props として利用できます(例: `<Lism isContainer>`)。
|
|
41
|
+
|
|
42
|
+
詳細は以下の個別ドキュメントを参照してください:
|
|
43
|
+
- [is--container](./trait-class/is--container.md)
|
|
44
|
+
- [is--wrapper](./trait-class/is--wrapper.md)
|
|
45
|
+
- [is--layer](./trait-class/is--layer.md)
|
|
46
|
+
- [is--boxLink](./trait-class/is--boxLink.md)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## `has--` Trait(機能付与)
|
|
50
|
+
|
|
51
|
+
要素に**単一機能の trait を付与**するクラスです。CSS 変数によりカスタマイズポイントを提供します。
|
|
52
|
+
|
|
53
|
+
| クラス | 用途 | 主な CSS 変数 |
|
|
54
|
+
|--------|------|--------------|
|
|
55
|
+
| `has--transition` | transition プロパティをまとめてセット。主に hoverクラス(`-hov:*`)と組み合わせて使用 | `--transitionProps`, `--duration`, `--ease`, `--delay`(グローバル上書きは `--transition-duration`) |
|
|
56
|
+
| `has--gutter` | コンテンツの左右に統一した余白(gutter)を設定する | `--gutter-size`(デフォルト `var(--s30)`) |
|
|
57
|
+
| `has--snap` | `scroll-snap-` 系プロパティを CSS 変数経由でセットできるようにする | `--snapType`, `--snapAlign` 等 |
|
|
58
|
+
| `has--mask` | `--maskImg` 変数と組み合わせて、要素自身にマスクを適用する | `--maskImg`, `--maskPos`(`50%`), `--maskSize`(`contain`), `--maskRepeat`(`no-repeat`) |
|
|
59
|
+
|
|
60
|
+
Lism コンポーネントでは `hasTransition`, `hasGutter`, `hasSnap`, `hasMask` という Props として利用できます(例: `<Lism hasTransition>`)。
|
|
61
|
+
|
|
62
|
+
詳細は以下の個別ドキュメントを参照してください:
|
|
63
|
+
- [has--transition](./trait-class/has--transition.md)
|
|
64
|
+
- [has--gutter](./trait-class/has--gutter.md)
|
|
65
|
+
- [has--snap](./trait-class/has--snap.md)
|
|
66
|
+
- [has--mask](./trait-class/has--mask.md)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## `is--` と `has--` の判断軸
|
|
70
|
+
|
|
71
|
+
| | `is--` | `has--` |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| 意味 | 〜である(役割・存在の宣言) | 〜を持つ(機能の付与) |
|
|
74
|
+
| CSS 変数 | 必須ではない | 必須(カスタマイズポイント) |
|
|
75
|
+
|
|
76
|
+
- その要素が **何であるか**(役割)を表すなら → `is--`
|
|
77
|
+
- その要素に **どんな機能を持たせるか**(カスタマイズポイント付き)なら → `has--`
|
|
@@ -31,7 +31,6 @@ Lism コンポーネントでの `util` prop による指定方法は [component
|
|
|
31
31
|
| `u--cbox` | `--keycolor` を使い `color-mix()` で `--c` / `--bgc` / `--bdc` を自動生成する色付きボックス | [`_cbox.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/utility/_cbox.scss) |
|
|
32
32
|
| `u--collapseGrid` | Grid / Flex の子要素間に `box-shadow` で境界線を表現する | [`_itemDivider.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/utility/_itemDivider.scss) |
|
|
33
33
|
| `u--srOnly` | スクリーンリーダー専用(視覚的に非表示)。`clip-path: inset(50%)` で実装 | [`_hidden.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/utility/_hidden.scss) |
|
|
34
|
-
| `u--snap` | スクロールスナップコンテナ。`--snapType`, `--snapAlign`, `--snapStop` で制御 | [`_snap.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/utility/_snap.scss) |
|
|
35
34
|
| `u--clipText` | テキストで背景をクリッピング(`background-clip: text`) | [`_clipText.scss`](https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/utility/_clipText.scss) |
|
|
36
35
|
|
|
37
36
|
|
package/dist/data/meta.js
CHANGED
|
@@ -4,7 +4,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
4
4
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
// スキル Markdown の正本を直接参照(開発・テスト時)
|
|
6
6
|
// npm パッケージとして利用される場合は dist/data/guides/ にフォールバック
|
|
7
|
-
const skillsDir = resolve(__dirname, '..', '..', '..', '..', '
|
|
7
|
+
const skillsDir = resolve(__dirname, '..', '..', '..', '..', 'skills', 'lism-css-guide');
|
|
8
8
|
const distDir = resolve(__dirname, '..', 'data', 'guides');
|
|
9
9
|
const guidesDir = existsSync(skillsDir) ? skillsDir : distDir;
|
|
10
10
|
const cache = new Map();
|
package/dist/lib/search.js
CHANGED
|
@@ -97,7 +97,8 @@ export function searchDocs(entries, query, options) {
|
|
|
97
97
|
/**
|
|
98
98
|
* `sourcePath`(実 MDX ファイルの相対パス)を公開 URL のスラッグに変換する。
|
|
99
99
|
*
|
|
100
|
-
* - `primitives/` 配下のみファイル名の casing
|
|
100
|
+
* - `primitives/` / `trait-class/` 配下のみファイル名の casing を保持
|
|
101
|
+
* (CSS クラス名と URL を一致させるための例外)
|
|
101
102
|
* - それ以外は全て小文字化(Astro content collections の `generateId` と揃える)
|
|
102
103
|
*
|
|
103
104
|
* IMPORTANT: `apps/docs/src/lib/contentSlug.ts` の `toContentSlug` と必ず同じロジックに保つこと。
|
|
@@ -105,11 +106,13 @@ export function searchDocs(entries, query, options) {
|
|
|
105
106
|
* apps/docs 側を変更した場合は必ずここも合わせて更新する。
|
|
106
107
|
*
|
|
107
108
|
* 例:
|
|
108
|
-
* `primitives/l--tileGrid.mdx`
|
|
109
|
-
* `
|
|
110
|
-
* `
|
|
109
|
+
* `primitives/l--tileGrid.mdx` → `primitives/l--tileGrid`
|
|
110
|
+
* `trait-class/is--boxLink.mdx` → `trait-class/is--boxLink`
|
|
111
|
+
* `core-components/Group.mdx` → `core-components/group`
|
|
112
|
+
* `ui/DummyText.mdx` → `ui/dummytext`
|
|
111
113
|
*/
|
|
114
|
+
const PRESERVE_CASE_PREFIXES = ['primitives/', 'trait-class/'];
|
|
112
115
|
function sourcePathToUrlSlug(sourcePath) {
|
|
113
116
|
const withoutExt = sourcePath.replace(/\.mdx$/, '');
|
|
114
|
-
return withoutExt.startsWith(
|
|
117
|
+
return PRESERVE_CASE_PREFIXES.some((prefix) => withoutExt.startsWith(prefix)) ? withoutExt : withoutExt.toLowerCase();
|
|
115
118
|
}
|
|
@@ -23,18 +23,19 @@ function parsePrimitiveHeading(md) {
|
|
|
23
23
|
return null;
|
|
24
24
|
return { className: match[1], componentName: match[2] };
|
|
25
25
|
}
|
|
26
|
+
const ALIAS_SOURCE_DIRS = ['primitives/', 'trait-class/'];
|
|
26
27
|
let classAliasMap = null;
|
|
27
28
|
let componentAliasMap = null;
|
|
28
|
-
/** primitives
|
|
29
|
-
* angle-bracket
|
|
30
|
-
*
|
|
29
|
+
/** primitives/ および trait-class/ 配下の *.md を走査して、クラス名由来 / React コンポーネント名由来の alias map を構築する(遅延初期化・キャッシュ)。
|
|
30
|
+
* angle-bracket 形式の問い合わせには componentAliasMap のみを照合し、
|
|
31
|
+
* クラス専用プリミティブへの false positive を避けるために分離している。 */
|
|
31
32
|
function buildAliasMaps() {
|
|
32
33
|
if (classAliasMap && componentAliasMap)
|
|
33
34
|
return;
|
|
34
35
|
const classMap = new Map();
|
|
35
36
|
const componentMap = new Map();
|
|
36
37
|
for (const filename of getGuideFilenames()) {
|
|
37
|
-
if (!filename.startsWith(
|
|
38
|
+
if (!ALIAS_SOURCE_DIRS.some((dir) => filename.startsWith(dir)))
|
|
38
39
|
continue;
|
|
39
40
|
const parsed = parsePrimitiveHeading(loadMarkdown(filename));
|
|
40
41
|
if (!parsed)
|
|
@@ -78,7 +79,7 @@ export function registerGetComponent(server) {
|
|
|
78
79
|
const isAngle = isAngleBracketNotation(name);
|
|
79
80
|
// --- 1) lism-css コア: primitives/ の個別ファイルを alias map で解決 ---
|
|
80
81
|
// angle-bracket 形式 (`<Vertical>`) は React コンポーネント alias のみと照合し、
|
|
81
|
-
//
|
|
82
|
+
// クラス専用プリミティブへの false positive を避ける。
|
|
82
83
|
if (!pkg || pkg === 'lism-css') {
|
|
83
84
|
const componentHit = getComponentAliasMap().get(normalizedKey);
|
|
84
85
|
if (componentHit) {
|
|
@@ -136,7 +137,7 @@ export function registerGetComponent(server) {
|
|
|
136
137
|
for (const [key, file] of map) {
|
|
137
138
|
if (key.includes(normalizedKey) && !seenFiles.has(file)) {
|
|
138
139
|
seenFiles.add(file);
|
|
139
|
-
moduleCandidates.push(file.replace(
|
|
140
|
+
moduleCandidates.push(file.replace(new RegExp(`^(${ALIAS_SOURCE_DIRS.join('|')})`), '').replace(/\.md$/, ''));
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
143
|
}
|
package/dist/tools/get-guide.js
CHANGED
|
@@ -14,7 +14,7 @@ const GUIDE_TOPICS = {
|
|
|
14
14
|
label: 'UI components (Accordion, Modal, Tabs, Button, etc.)',
|
|
15
15
|
},
|
|
16
16
|
'base-styles': { file: 'base-styles.md', label: 'Base styling, reset CSS, HTML element styles' },
|
|
17
|
-
'set-class': { file: 'set-class.md', label: 'Set classes (set--plain, set--
|
|
17
|
+
'set-class': { file: 'set-class.md', label: 'Set classes (set--plain, set--var:bxsh, set--var:hov, etc.)' },
|
|
18
18
|
'primitive-class': { file: 'primitive-class.md', label: 'Primitive class prefixes (is--, l--, a--) and Component class (c--)' },
|
|
19
19
|
'utility-class': { file: 'utility-class.md', label: 'Utility classes (u--trim, u--cbox, etc.)' },
|
|
20
20
|
'css-rules': { file: 'css-rules.md', label: 'CSS methodology, layer structure, naming conventions' },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lism-css/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "MCP server for lism-css documentation and API reference.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"format": "prettier --write . --ignore-path ../../.prettierignore",
|
|
26
|
-
"build": "tsc -p tsconfig.build.json && cp src/data/docs-index.json dist/data/ && rm -rf dist/data/guides && cp -r
|
|
26
|
+
"build": "tsc -p tsconfig.build.json && cp src/data/docs-index.json dist/data/ && rm -rf dist/data/guides && cp -r ../../skills/lism-css-guide dist/data/guides",
|
|
27
27
|
"dev": "tsc --watch",
|
|
28
28
|
"test": "vitest run"
|
|
29
29
|
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# is--vertical
|
|
2
|
-
|
|
3
|
-
要素に縦書きモード(`writing-mode`)を適用するクラス。対応するコンポーネントエイリアスはありません(直接クラス指定で使用)。
|
|
4
|
-
|
|
5
|
-
## 基本情報
|
|
6
|
-
|
|
7
|
-
- クラス名: `is--vertical`
|
|
8
|
-
- SCSSソース: https://raw.githubusercontent.com/lism-css/lism-css/main/packages/lism-css/src/scss/primitives/trait/_vertical.scss
|
|
9
|
-
- ドキュメント(人間向け): https://lism-css.com/docs/primitives/is--vertical/
|
|
10
|
-
|
|
11
|
-
## クラスバリエーション
|
|
12
|
-
|
|
13
|
-
縦書き用の値はトークン(`--vertical-mode`)で管理されており、`lang` 属性に合わせて `vertical-rl` / `vertical-lr` を上書きできます。
|
|
14
|
-
|
|
15
|
-
| クラス名 | 説明 |
|
|
16
|
-
|---------|------|
|
|
17
|
-
| `is--vertical` | 常に縦書きモードにする |
|
|
18
|
-
| `is--vertical@sm` | `sm` サイズ以上で縦書きにする |
|
|
19
|
-
| `is--vertical@md` | `md` サイズ以上で縦書きにする |
|
|
20
|
-
|
|
21
|
-
**注意**: `is--vertical@sm`, `is--vertical@md` を使う場合は、**`set--bp` クラスを併用する必要があります**。
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
|
|
25
|
-
### 常に縦書き
|
|
26
|
-
|
|
27
|
-
```html
|
|
28
|
-
<div class="is--vertical">
|
|
29
|
-
<p>縦書きテキスト...</p>
|
|
30
|
-
</div>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### `sm` 以上で縦書きにする
|
|
34
|
-
|
|
35
|
-
```jsx
|
|
36
|
-
<Flow set="gutter" py="20" w="100%" h="20em" className="is--vertical@sm set--bp">
|
|
37
|
-
<p>本文テキスト...</p>
|
|
38
|
-
<p>本文テキスト...</p>
|
|
39
|
-
</Flow>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```html
|
|
43
|
-
<div class="is--vertical@sm set--bp l--flow set--gutter -py:20 -w:100% -h" style="--h: 20em">
|
|
44
|
-
<p>本文テキスト...</p>
|
|
45
|
-
<p>本文テキスト...</p>
|
|
46
|
-
</div>
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## 関連プリミティブ
|
|
50
|
-
|
|
51
|
-
- [l--flow](./l--flow.md) — 縦書きコンテンツと組み合わせる記事フロー
|
|
52
|
-
- [is--wrapper](./is--wrapper.md) — コンテンツ幅の制限
|