@lism-css/mcp 0.24.0 → 0.27.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 +279 -139
- package/dist/data/guides/SKILL.md +87 -114
- package/dist/data/guides/antipatterns-layout.md +39 -40
- package/dist/data/guides/antipatterns.md +16 -12
- package/dist/data/guides/base-styles.md +1 -1
- package/dist/data/guides/components-core.md +9 -8
- package/dist/data/guides/components-ui.md +82 -35
- package/dist/data/guides/css-rules.md +103 -97
- package/dist/data/guides/customize.md +12 -26
- package/dist/data/guides/naming.md +8 -24
- package/dist/data/guides/property-class/all-props.md +25 -23
- package/dist/data/guides/property-class/bd.md +4 -1
- package/dist/data/guides/property-class.md +2 -1
- package/dist/data/guides/references/authoring.md +40 -52
- package/dist/data/guides/references/page-sections.md +5 -5
- package/dist/data/guides/references/verification.md +6 -4
- package/dist/data/guides/responsive.md +4 -24
- package/dist/data/guides/set-class.md +1 -1
- package/dist/data/guides/tokens.md +44 -18
- package/dist/data/guides/trait-class/has--transition.md +17 -2
- package/dist/data/guides/trait-class.md +2 -13
- package/dist/data/meta.js +2 -2
- package/dist/lib/markdown-utils.d.ts +3 -22
- package/dist/lib/markdown-utils.js +7 -30
- package/dist/lib/search.d.ts +1 -4
- package/dist/lib/search.js +17 -36
- package/dist/tools/convert-css.js +8 -25
- package/dist/tools/get-guide.js +2 -2
- package/package.json +5 -5
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# 検証の分離(`.lism/`規約と評価サブエージェント)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
提出前チェックの実行を実装担当の本人から分離し、実装プランと評価結果をユーザーが後から確認できるファイルとして残すための規約。フローとチェック項目は`SKILL.md`、実装プランの書式は[`authoring.md`](./authoring.md)が正本。
|
|
4
|
+
|
|
5
|
+
`lism-css-guide`では実行レベルが「通常」「値照合付き」の時だけ適用する(「不要」「軽量」では`.lism/`も評価委任も無し)。このレベル条件は`lism-css-guide`固有で、`.lism/`規約を参照する他のスキル(`lism-css-refactor`等)ではファイルを作るかどうかを各スキルの手順に従う。
|
|
4
6
|
|
|
5
7
|
## `.lism/`作業ディレクトリ
|
|
6
8
|
|
|
@@ -9,7 +11,7 @@ Lism実装作業の成果物(実装プラン・評価報告)は、プロジ
|
|
|
9
11
|
| ファイル | 内容 | 作成タイミング |
|
|
10
12
|
| --- | --- | --- |
|
|
11
13
|
| `.lism/plan.md` | 実装プラン(トークン差分表・構成表を含む) | 値照合付きレベルの実装前チェック時 |
|
|
12
|
-
| `.lism/review.md` | 評価サブエージェント(委任できない環境では本人)による評価報告 |
|
|
14
|
+
| `.lism/review.md` | 評価サブエージェント(委任できない環境では本人)による評価報告 | 通常・値照合付きレベルの提出前セルフチェック時 |
|
|
13
15
|
|
|
14
16
|
- **固定名・上書き方式**。タスクごとに別名を作らない。照合先が一意に決まることが、評価サブエージェントや将来の機械チェックの前提になる。複数タスクの文脈は各ファイル冒頭のメタデータヘッダで区別する。
|
|
15
17
|
- メタデータヘッダには日時・対象タスク・スケール前提(デザイン再現時。判定根拠付き)を書く。
|
|
@@ -28,7 +30,7 @@ scale: PNGは2880px幅=1440px設計の2x書き出し(画像実寸と行送り
|
|
|
28
30
|
|
|
29
31
|
## 評価サブエージェントへの委任
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
本人だけの照合は自分のプランを疑いにくく、例外を自己承認しやすい。委任できる環境では読み取り専用の評価サブエージェントに委任し、できない環境では本人が`SKILL.md`「提出前セルフチェック」の順に行う。
|
|
32
34
|
|
|
33
35
|
運用ルール:
|
|
34
36
|
|
|
@@ -62,7 +64,7 @@ scale: PNGは2880px幅=1440px設計の2x書き出し(画像実寸と行送り
|
|
|
62
64
|
| file:line | 違反ルール(資料名と節) | 内容 | 判定 |
|
|
63
65
|
| --- | --- | --- | --- |
|
|
64
66
|
|
|
65
|
-
判定は「違反 /
|
|
67
|
+
判定は「違反 / 要確認」。表には違反・要確認の行だけを載せ、適合した項目を1行ずつ列挙しないでください。最後に「照合した資料名の一覧」と違反・要確認の件数サマリを書いてください。違反ゼロの場合、報告はこの一覧とサマリだけでかまいません。
|
|
66
68
|
```
|
|
67
69
|
|
|
68
70
|
### grepによる補助チェック(コマンドが実行できる環境のみ)
|
|
@@ -34,7 +34,7 @@ Smartphone ──┬── Tablet (Portrait) ──┬── Tablet (Landscape)
|
|
|
34
34
|
|
|
35
35
|
**`xs` / `xl` は opt-in**:
|
|
36
36
|
- デフォルト値は `0`(無効)で、CSS は出力されません。`lism.config.js` の `breakpoints` でサイズを与えると有効化されます(customize.md 参照)。
|
|
37
|
-
- 型(Lism コンポーネント)でも `sm` / `md` / `lg`
|
|
37
|
+
- 型(Lism コンポーネント)でも `sm` / `md` / `lg` のみがデフォルトで補完・許可されます。`@lism-css/plugin` の統合プラグイン使用時は有効化した BP を反映した `lism-env.d.ts` が自動生成されるため手書き不要(customize.md 参照)。プラグインを使わない構成では `declare module 'lism-css'` で `BreakpointRegistry` を拡張して解禁します。
|
|
38
38
|
|
|
39
39
|
```ts
|
|
40
40
|
// src/lism.d.ts など
|
|
@@ -85,6 +85,7 @@ Smartphone ──┬── Tablet (Portrait) ──┬── Tablet (Landscape)
|
|
|
85
85
|
**仕組み:**
|
|
86
86
|
- BPクラス `-{prop}_{bp}` は `@container (min-width: ...)` 内で発火し、`--{prop}_{bp}` 変数で切り替え先の値を指定
|
|
87
87
|
- コンテナクエリ採用のため、レスポンシブ値を使うには祖先要素に `is--container` などコンテナ宣言が必要
|
|
88
|
+
- base 値は任意。省くと BP 未満はそのプロパティの既定値のまま(例: `-d_sm` + `--d_sm: none` で sm 以上だけ非表示)
|
|
88
89
|
- 出力形式はプロパティによって 2 パターン(基本 / 例外)
|
|
89
90
|
|
|
90
91
|
**基本パターン** — BP 用変数を直接読む:
|
|
@@ -125,37 +126,16 @@ Smartphone ──┬── Tablet (Portrait) ──┬── Tablet (Landscape)
|
|
|
125
126
|
|
|
126
127
|
## Authoring時の確認ルール
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
BP専用値だけを書くと、BP未満で値が未指定になります。配列では先頭、オブジェクトでは`base`、HTMLでは`-{prop}:{value}`を必ず置きます。
|
|
131
|
-
|
|
132
|
-
| NG | OK |
|
|
133
|
-
| --- | --- |
|
|
134
|
-
| `<Box p={{ sm: 30 }}>` | `<Box p={{ base: '20', sm: '30' }}>` |
|
|
135
|
-
| `<div class="-p_sm" style="--p_sm:var(--s30)">` | `<div class="-p:20 -p_sm" style="--p_sm:var(--s30)">` |
|
|
129
|
+
NG→OK例は [antipatterns-layout.md](./antipatterns-layout.md#レスポンシブ抜け) の「レスポンシブ抜け」「レスポンシブ配列の冗長指定」を参照。
|
|
136
130
|
|
|
137
131
|
### 冗長配列は圧縮する
|
|
138
132
|
|
|
139
|
-
前のBPと同じ値を繰り返さない。変わらないBPは`null`でスキップし、全BP
|
|
140
|
-
|
|
141
|
-
| NG | OK |
|
|
142
|
-
| --- | --- |
|
|
143
|
-
| `fxd={['column', 'column', 'row']}` | `fxd={['column', null, 'row']}` |
|
|
144
|
-
| `p={['20', '20', '20']}` | `p="20"` |
|
|
145
|
-
| `cols={[1, 1, 3]}` | `cols={[1, null, 3]}` |
|
|
146
|
-
|
|
147
|
-
ただし、既存コードの型・生成仕様で`null`が使えない場合は既存パターンを優先します。レスポンシブ差分を誤って単一値化しないでください。
|
|
133
|
+
前のBPと同じ値を繰り返さない。変わらないBPは`null`でスキップし、全BPで同じ値なら単一値にします。ただし、既存コードの型・生成仕様で`null`が使えない場合は既存パターンを優先し、レスポンシブ差分を誤って単一値化しないでください。
|
|
148
134
|
|
|
149
135
|
### container query運用では祖先`isContainer`を確認する
|
|
150
136
|
|
|
151
137
|
デフォルトではレスポンシブProperty Classは`@container`で発火します。レスポンシブ値を載せる要素の祖先に`isContainer`/`is--container`があるか確認してください。
|
|
152
138
|
|
|
153
|
-
```jsx
|
|
154
|
-
<Stack isContainer>
|
|
155
|
-
<Box p={{ base: '20', md: '40' }}>...</Box>
|
|
156
|
-
</Stack>
|
|
157
|
-
```
|
|
158
|
-
|
|
159
139
|
`$is_container_query:0`などの設定でmedia query運用が確認できる場合は、`isContainer`祖先は必須ではありません。設定が不明な場合は、既存SCSS設定・`customize.md`・生成CSSを確認してから判断してください。
|
|
160
140
|
|
|
161
141
|
### `isContainer`を置く位置で挙動が変わる
|
|
@@ -74,7 +74,7 @@ Lism CSSでは、クラスを持つリスト(`ul` / `ol`)ではスタイル
|
|
|
74
74
|
|
|
75
75
|
## `set--bxsh`
|
|
76
76
|
|
|
77
|
-
`SHADOW` トークン変数(`--bxsh--{N}`)を再計算するためのクラスです。`:root` で定義される `--shc
|
|
77
|
+
`SHADOW` トークン変数(`--bxsh--{N}`)を再計算するためのクラスです。`:root` で定義される `--shc`(影の色)を特定要素で上書きしたい時に利用します。近い側の影色 `--shc--near` も `--shc` から再計算されるため、2層の影がまとめて変わります。
|
|
78
78
|
|
|
79
79
|
使用例:
|
|
80
80
|
```html
|
|
@@ -32,12 +32,13 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
32
32
|
| --- | --- | --- | --- |
|
|
33
33
|
| 余白 (space) | `5`, `10`, `15`, `20`, `25`, `30`, `35`, `40`, `50`, `60`, `70`, `80` | `--s{N}` | `--s20` |
|
|
34
34
|
| フォントサイズ (fz) | `base`, `2xs`, `xs`, `s`, `m`, `l`, `xl`, `2xl`, `3xl`, `4xl`, `5xl` | `--fz--{key}` | `--fz--l` |
|
|
35
|
-
|
|
|
36
|
-
|
|
|
35
|
+
| ハーフレディング (hl) | `base`, `xs`, `s`, `l`, `xl` | `--hl--{key}` | `--hl--s` |
|
|
36
|
+
| 行間比率 (lh) | `xs`, `s`, `m`, `l`, `xl` | `--lh--{key}` | `--lh--m` |
|
|
37
|
+
| 字間 (lts) | `base`, `xs`, `s`, `l`, `xl` | `--lts--{key}` | `--lts--s` |
|
|
37
38
|
| フォント (ff) | `base`, `accent`, `mono` | `--ff--{key}` | `--ff--mono` |
|
|
38
39
|
| ウェイト (fw) | `light`, `normal`, `bold` | `--fw--{key}` | `--fw--bold` |
|
|
39
40
|
| 透明度 (o) | `mp`, `p`, `pp`, `ppp` | `--o--{key}` | `--o--p` |
|
|
40
|
-
| 角丸 (bdrs) | `10`, `20`, `30`, `40`, `99`, `inner` | `--bdrs--{key}` | `--bdrs--20` |
|
|
41
|
+
| 角丸 (bdrs) | `10`, `20`, `30`, `40`, `50`, `99`, `inner` | `--bdrs--{key}` | `--bdrs--20` |
|
|
41
42
|
| 影 (bxsh) | `10`, `20`, `30`, `40`, `50` | `--bxsh--{N}` | `--bxsh--20` |
|
|
42
43
|
| サイズ (sz) | `xs`, `s`, `m`, `l`, `xl` | `--sz--{key}` | `--sz--l` |
|
|
43
44
|
| アスペクト比 (ar) | `og` | `--ar--{key}` | `--ar--og` |
|
|
@@ -51,7 +52,7 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
51
52
|
|
|
52
53
|
## 余白 (space)
|
|
53
54
|
|
|
54
|
-
フィボナッチ数列ベースのスケーリング。`--s-unit`(デフォルト `
|
|
55
|
+
フィボナッチ数列ベースのスケーリング。`--s-unit`(デフォルト `0.5rem` ≒ 8px)を基準単位とする。
|
|
55
56
|
|
|
56
57
|
| CSS変数 | 値 | 実サイズ目安 |
|
|
57
58
|
| --- | --- | --- |
|
|
@@ -68,7 +69,7 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
68
69
|
| `--s70` | `calc(var(--s-unit) * 21)` | ≒ 168px |
|
|
69
70
|
| `--s80` | `calc(var(--s-unit) * 34)` | ≒ 272px |
|
|
70
71
|
|
|
71
|
-
`--s40` 以降の主軸は係数 `1, 2, 3, 5, 8, 13, 21, 34`(フィボナッチ数列)に基づく。`--s5`〜`--s35` の前半部分は、主軸トークン間を補う中間値(4px / 12px / 20px / 32px 相当)として配置している。`--s-unit`
|
|
72
|
+
`--s40` 以降の主軸は係数 `1, 2, 3, 5, 8, 13, 21, 34`(フィボナッチ数列)に基づく。`--s5`〜`--s35` の前半部分は、主軸トークン間を補う中間値(4px / 12px / 20px / 32px 相当)として配置している。`--s-unit` を上書きするとスケール全体を比例的に調整できる。`--fz--base` を流体値にしていて余白も連動させたい場合は、`:root` で `--s-unit: calc(var(--fz--base) * 0.5)` に上書きする。
|
|
72
73
|
|
|
73
74
|
### `set--s` ユーティリティ
|
|
74
75
|
|
|
@@ -109,7 +110,9 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
109
110
|
|
|
110
111
|
## 行間 (hl/lh)
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
`line-height` は全要素で `var(--lh, calc(1em + var(--hl) * 2))` として算出される。既定は `--hl`(ハーフレディング)で管理し、`--lh` がセットされていればそちらが優先される。
|
|
114
|
+
|
|
115
|
+
`hl` はハーフレディングの大きさ。`--hl-unit`(≒ 2px)を基準単位とする。
|
|
113
116
|
|
|
114
117
|
| CSS変数 | 値 | 説明 |
|
|
115
118
|
| --- | --- | --- |
|
|
@@ -117,6 +120,19 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
117
120
|
| `--hl--s` | `calc(var(--hl-unit) * 2)` | 小さめの行間(≒ 4px) |
|
|
118
121
|
| `--hl--base` | `calc(var(--hl-unit) * 3)` | 基本の行間(≒ 6px) |
|
|
119
122
|
| `--hl--l` | `calc(var(--hl-unit) * 4)` | 大きめの行間(≒ 8px) |
|
|
123
|
+
| `--hl--xl` | `calc(var(--hl-unit) * 5)` | より大きな行間(≒ 10px) |
|
|
124
|
+
|
|
125
|
+
`--fz--base` を流体値にしていて行間も連動させたい場合は、`:root` で `--hl-unit: calc(var(--fz--base) * 0.125)` に上書きする。
|
|
126
|
+
|
|
127
|
+
`lh` は `line-height` を倍率で指定するトークン。`hl` が fz 非依存の固定量なのに対し、fz に比例した行送りを保ちたい場合に使う。
|
|
128
|
+
|
|
129
|
+
| CSS変数 | 値 |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| `--lh--xs` | `1.25` |
|
|
132
|
+
| `--lh--s` | `1.5` |
|
|
133
|
+
| `--lh--m` | `1.75` |
|
|
134
|
+
| `--lh--l` | `2` |
|
|
135
|
+
| `--lh--xl` | `2.25` |
|
|
120
136
|
|
|
121
137
|
|
|
122
138
|
## 字間 (lts)
|
|
@@ -124,6 +140,7 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
124
140
|
| CSS変数 | 値 | 説明 |
|
|
125
141
|
| --- | --- | --- |
|
|
126
142
|
| `--lts--base` | `normal` | 基本の文字間隔 |
|
|
143
|
+
| `--lts--xs` | `-0.05em` | より狭い文字間隔 |
|
|
127
144
|
| `--lts--s` | `-0.025em` | 狭めの文字間隔 |
|
|
128
145
|
| `--lts--l` | `0.05em` | 広めの文字間隔 |
|
|
129
146
|
| `--lts--xl` | `0.1em` | より広い文字間隔 |
|
|
@@ -163,32 +180,37 @@ CSSコードを書く場合やコンポーネントのPropsに値を指定する
|
|
|
163
180
|
|
|
164
181
|
## 角丸 (bdrs)
|
|
165
182
|
|
|
183
|
+
増分が0.125remずつ大きくなる二階等差数列のスケール。
|
|
184
|
+
|
|
166
185
|
| CSS変数 | 値 | 説明 |
|
|
167
186
|
| --- | --- | --- |
|
|
168
187
|
| `--bdrs--10` | `0.25rem` | ≒ 4px |
|
|
169
|
-
| `--bdrs--20` | `0.
|
|
170
|
-
| `--bdrs--30` | `
|
|
171
|
-
| `--bdrs--40` | `
|
|
188
|
+
| `--bdrs--20` | `0.375rem` | ≒ 6px |
|
|
189
|
+
| `--bdrs--30` | `0.625rem` | ≒ 10px |
|
|
190
|
+
| `--bdrs--40` | `1rem` | ≒ 16px |
|
|
191
|
+
| `--bdrs--50` | `1.5rem` | ≒ 24px |
|
|
172
192
|
| `--bdrs--99` | `99rem` | 完全な丸(pill) |
|
|
173
|
-
| `--bdrs--inner` | `calc(var(--bdrs, 0px) - var(--p, 0px))` | 内側の角丸(親要素に合わせる) |
|
|
193
|
+
| `--bdrs--inner` | `calc(var(--bdrs, 0px) - var(--p, 0px) + 1px)` | 内側の角丸(親要素に合わせる) |
|
|
174
194
|
|
|
175
195
|
|
|
176
196
|
## 影 (bxsh)
|
|
177
197
|
|
|
178
|
-
|
|
198
|
+
要素に近い薄い影と主となる影の2層で構成される。近い側の影は、1段小さいシャドウサイズ `--shsz--{N}` と、`--shc`(シャドウカラー)を50%薄めた `--shc--near` を使う。要素ごとに `--shc` を上書きして再計算したい場合は、`set--bxsh` クラスを併用する(`--shc--near` も `--shc` から再計算される)。
|
|
179
199
|
|
|
180
200
|
| CSS変数 | 値 |
|
|
181
201
|
| --- | --- |
|
|
182
|
-
| `--bxsh--10` | `var(--shsz--10) var(--shc)` |
|
|
183
|
-
| `--bxsh--20` | `var(--shsz--20) var(--shc)` |
|
|
184
|
-
| `--bxsh--30` | `var(--shsz--30) var(--shc)` |
|
|
185
|
-
| `--bxsh--40` | `var(--shsz--40) var(--shc)` |
|
|
186
|
-
| `--bxsh--50` | `var(--shsz--50) var(--shc)` |
|
|
202
|
+
| `--bxsh--10` | `var(--shsz--5) var(--shc--near), var(--shsz--10) var(--shc)` |
|
|
203
|
+
| `--bxsh--20` | `var(--shsz--10) var(--shc--near), var(--shsz--20) var(--shc)` |
|
|
204
|
+
| `--bxsh--30` | `var(--shsz--20) var(--shc--near), var(--shsz--30) var(--shc)` |
|
|
205
|
+
| `--bxsh--40` | `var(--shsz--30) var(--shc--near), var(--shsz--40) var(--shc)` |
|
|
206
|
+
| `--bxsh--50` | `var(--shsz--40) var(--shc--near), var(--shsz--50) var(--shc)` |
|
|
187
207
|
|
|
188
208
|
| CSS変数 | 初期値 |
|
|
189
209
|
| --- | --- |
|
|
190
|
-
| `--shadow` | `hsl(220
|
|
210
|
+
| `--shadow` | `hsl(220 2% 4% / 8%)` |
|
|
191
211
|
| `--shc` | `var(--shadow)` |
|
|
212
|
+
| `--shc--near` | `color-mix(in srgb, var(--shc), transparent 50%)` |
|
|
213
|
+
| `--shsz--5` | `0px 0px 1px` |
|
|
192
214
|
| `--shsz--10` | `0px 1px 3px` |
|
|
193
215
|
| `--shsz--20` | `0px 2px 6px` |
|
|
194
216
|
| `--shsz--30` | `0px 4px 12px` |
|
|
@@ -263,10 +285,12 @@ OKLCH で定義されたカラーパレット。`--L`(明度)と `--C`(彩
|
|
|
263
285
|
|
|
264
286
|
`--keycolor: var(--red)` のように指定しておくことで、そのボックス自身や子要素のカラー Props(`c`, `bgc`, `bdc` など)で 特定の色をハードコーディングせずに `--keycolor` 経由で参照できるようにすることができる。代表的な使用例は `u--cbox` ユーティリティクラス。
|
|
265
287
|
|
|
288
|
+
`c` / `bgc` / `bdc` の値に `keycolor` を指定すると、`-c:keycolor` のような Property Class が出力される(`style` 属性ではない)。これらのクラスは `--c: var(--keycolor)` のように `--keycolor` を参照する。
|
|
289
|
+
|
|
266
290
|
```html
|
|
267
291
|
<!-- ボックスにキーカラーを設定、テキストをキーカラーに連動させる例 -->
|
|
268
292
|
<div class="u--cbox" style="--keycolor: var(--red)">
|
|
269
|
-
<p class="-c
|
|
293
|
+
<p class="-c:keycolor">...</p>
|
|
270
294
|
</div>
|
|
271
295
|
```
|
|
272
296
|
```jsx
|
|
@@ -277,6 +301,8 @@ OKLCH で定義されたカラーパレット。`--L`(明度)と `--C`(彩
|
|
|
277
301
|
|
|
278
302
|
- `c`, `bgc` 等のカラー系 Props では、セマンティックカラー → パレットカラーの順で検索される
|
|
279
303
|
- どちらも最終的に `var(--{name})` に変換される
|
|
304
|
+
- `main.css` でクラス化されるのは厳選したセマンティックカラーと `keycolor` のみ(`-c:brand` / `-c:keycolor` など)。それ以外のカラートークン(`red` などのパレットカラー)は `style` 属性の CSS 変数として出力される
|
|
305
|
+
- `full.css` + `isFullMode` では、`c` / `bgc` / `bdc` の全カラートークンがクラス化される(`-bgc:red` など)
|
|
280
306
|
|
|
281
307
|
|
|
282
308
|
## トークン値の命名規則
|
|
@@ -3,9 +3,24 @@
|
|
|
3
3
|
`transition` 系のプロパティを CSS 変数経由でセットする Trait クラス。主に `-hov:*` クラスと組み合わせて、ホバー時のスムーズな変化に使う。
|
|
4
4
|
|
|
5
5
|
- Lism props: `hasTransition`(`<Lism hasTransition>` / `<Box hasTransition>` 等)
|
|
6
|
+
- 文字列を渡すと `--transitionProps` として出力される: `<Box hasTransition="color, opacity">` → `class="has--transition" style="--transitionProps: color, opacity"`
|
|
6
7
|
|
|
7
8
|
公式ドキュメント(使い方・コード例): https://lism-css.com/docs/trait-class.md#has--transition
|
|
8
9
|
|
|
10
|
+
## 対象プロパティは明示指定する
|
|
11
|
+
|
|
12
|
+
`--transitionProps` の初期値は `all` ではなく、色・影・透明度・transform 系・filter 系に限定したリスト。`all` はページ読み込み時やレイアウト変化時に意図しないアニメーション(ちらつき)を起こすため使わない。
|
|
13
|
+
|
|
14
|
+
実際に変化させるプロパティだけを `--transitionProps`(Lism props では `hasTransition="..."`)で明示指定する。初期値のリストに無いプロパティ(`padding`, `width`, `border-width` 等)を変化させる場合は必ず指定が要る。
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<a class="is--boxLink has--transition -hov:-bxsh" style="--transitionProps: box-shadow; --hov-bxsh: var(--bxsh--40)">...</a>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```jsx
|
|
21
|
+
<BoxLink hasTransition="box-shadow" hov={{ bxsh: '40' }}>...</BoxLink>
|
|
22
|
+
```
|
|
23
|
+
|
|
9
24
|
## SCSS 定義
|
|
10
25
|
|
|
11
26
|
```scss
|
|
@@ -13,7 +28,7 @@
|
|
|
13
28
|
--duration: var(--transition-duration, 0.25s);
|
|
14
29
|
--ease: ease;
|
|
15
30
|
--delay: 0s;
|
|
16
|
-
--transitionProps:
|
|
31
|
+
--transitionProps: color, background-color, border-color, box-shadow, scale, rotate, translate, transform, opacity, filter, backdrop-filter;
|
|
17
32
|
transition: var(--duration) var(--ease) var(--delay);
|
|
18
33
|
transition-property: var(--transitionProps);
|
|
19
34
|
}
|
|
@@ -23,7 +38,7 @@
|
|
|
23
38
|
|
|
24
39
|
| 変数 | 役割 | デフォルト |
|
|
25
40
|
| --- | --- | --- |
|
|
26
|
-
| `--transitionProps` | transition 対象プロパティ | `
|
|
41
|
+
| `--transitionProps` | transition 対象プロパティ | `color, background-color, border-color, box-shadow, scale, rotate, translate, transform, opacity, filter, backdrop-filter` |
|
|
27
42
|
| `--duration` | トランジションの長さ | `var(--transition-duration, 0.25s)` |
|
|
28
43
|
| `--ease` | イージング関数 | `ease` |
|
|
29
44
|
| `--delay` | ディレイ | `0s` |
|
|
@@ -52,26 +52,15 @@ Lism コンポーネントでは `isContainer`, `isLayer` 等の Props として
|
|
|
52
52
|
|
|
53
53
|
| クラス | 用途 | 主な CSS 変数 |
|
|
54
54
|
| --- | --- | --- |
|
|
55
|
-
| `has--transition` | transition プロパティをまとめてセット。主に hoverクラス(`-hov
|
|
55
|
+
| `has--transition` | transition プロパティをまとめてセット。主に hoverクラス(`-hov:*`)と組み合わせて使用。対象プロパティは `--transitionProps` で明示指定する(初期値は `all` ではなく色・影・透明度・transform 系・filter 系に限定) | `--transitionProps`, `--duration`, `--ease`, `--delay`(グローバル上書きは `--transition-duration`) |
|
|
56
56
|
| `has--gutter` | コンテンツの左右に統一した余白(gutter)を設定する | `--gutter`(基準値: `--gutter--base`、初期値 `var(--s30)`) |
|
|
57
57
|
| `has--snap` | `scroll-snap-` 系プロパティを CSS 変数経由でセットできるようにする | `--snapType`, `--snapAlign` 等 |
|
|
58
58
|
| `has--mask` | `--maskImg` 変数と組み合わせて、要素自身にマスクを適用する | `--maskImg`, `--maskPos`(`50%`), `--maskSize`(`contain`), `--maskRepeat`(`no-repeat`) |
|
|
59
59
|
|
|
60
|
-
Lism コンポーネントでは `hasTransition`, `hasGutter`, `hasSnap`, `hasMask` という Props として利用できます(例: `<Lism hasTransition>`)。
|
|
60
|
+
Lism コンポーネントでは `hasTransition`, `hasGutter`, `hasSnap`, `hasMask` という Props として利用できます(例: `<Lism hasTransition>`)。`hasTransition` は文字列も受け付け、`--transitionProps` として出力されます(例: `<Lism hasTransition="color, opacity">`)。
|
|
61
61
|
|
|
62
62
|
詳細は以下の個別ドキュメントを参照してください:
|
|
63
63
|
- [has--transition](./trait-class/has--transition.md)
|
|
64
64
|
- [has--gutter](./trait-class/has--gutter.md)
|
|
65
65
|
- [has--snap](./trait-class/has--snap.md)
|
|
66
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--`
|
package/dist/data/meta.js
CHANGED
|
@@ -1,38 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Markdown から指定した見出しのセクションを抽出する。
|
|
3
|
-
* 同レベル以上の次の見出しが来るまでの内容を返す。
|
|
4
|
-
* @param md - Markdown 全文
|
|
5
|
-
* @param heading - 見出しテキスト(`#` プレフィックスあり・なし両可)
|
|
6
|
-
*/
|
|
1
|
+
/** 指定見出しから同レベル以上の次の見出しまでを抽出する。headingは#の有無を問わない。 */
|
|
7
2
|
export declare function extractSection(md: string, heading: string): string;
|
|
8
|
-
/**
|
|
9
|
-
* Markdown から全ての見出しとその開始行を抽出する。
|
|
10
|
-
*/
|
|
11
3
|
export declare function listHeadings(md: string): {
|
|
12
4
|
level: number;
|
|
13
5
|
text: string;
|
|
14
6
|
line: number;
|
|
15
7
|
}[];
|
|
16
8
|
export interface PropRow {
|
|
17
|
-
/** Lism Prop 名(例: "fz") */
|
|
18
9
|
prop: string;
|
|
19
|
-
/** CSS プロパティ名(例: "font-size")。変数形式("--hl")も含む */
|
|
20
10
|
cssProperty: string;
|
|
21
|
-
/** 所属する ### セクション名 */
|
|
22
11
|
sectionName: string;
|
|
23
|
-
/** プリセット値クラス列の生テキスト(例: "-fz:base, -fz:5xl, ...") */
|
|
24
12
|
presetColumn: string;
|
|
25
13
|
}
|
|
26
|
-
/**
|
|
27
|
-
* property-class.md のテーブルを全て解析して PropRow[] を返す。
|
|
28
|
-
* `| Prop | CSS プロパティ | ...` 形式のテーブルのみ対象とする。
|
|
29
|
-
*/
|
|
14
|
+
/** Property Classの対象テーブルを解析してPropRowへ変換する。 */
|
|
30
15
|
export declare function parsePropRows(md: string): PropRow[];
|
|
31
|
-
/**
|
|
32
|
-
* Markdown からコンポーネント名に一致するセクションを探して返す。
|
|
33
|
-
*
|
|
34
|
-
* components-ui.md のように各コンポーネントが `## ComponentName` で始まる場合に有効。
|
|
35
|
-
*/
|
|
16
|
+
/** 各コンポーネントが`## ComponentName`で始まる文書向け。 */
|
|
36
17
|
export declare function findComponentByHeading(md: string, name: string): string;
|
|
37
18
|
/**
|
|
38
19
|
* Markdown 内のテーブルセル(`` `<ComponentName>` ``)からコンポーネントを含む
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
/** 見出しの `#` レベルを返す(見出しでなければ 0) */
|
|
2
1
|
function headingLevel(line) {
|
|
3
2
|
const m = line.match(/^(#{1,6})\s/);
|
|
4
3
|
return m ? m[1].length : 0;
|
|
5
4
|
}
|
|
6
|
-
/**
|
|
7
|
-
* Markdown から指定した見出しのセクションを抽出する。
|
|
8
|
-
* 同レベル以上の次の見出しが来るまでの内容を返す。
|
|
9
|
-
* @param md - Markdown 全文
|
|
10
|
-
* @param heading - 見出しテキスト(`#` プレフィックスあり・なし両可)
|
|
11
|
-
*/
|
|
5
|
+
/** 指定見出しから同レベル以上の次の見出しまでを抽出する。headingは#の有無を問わない。 */
|
|
12
6
|
export function extractSection(md, heading) {
|
|
13
7
|
const headingText = heading.replace(/^#+\s*/, '').trim();
|
|
14
8
|
const lines = md.split('\n');
|
|
@@ -34,9 +28,6 @@ export function extractSection(md, heading) {
|
|
|
34
28
|
}
|
|
35
29
|
return lines.slice(startIdx, endIdx).join('\n').trimEnd();
|
|
36
30
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Markdown から全ての見出しとその開始行を抽出する。
|
|
39
|
-
*/
|
|
40
31
|
export function listHeadings(md) {
|
|
41
32
|
return md.split('\n').flatMap((line, i) => {
|
|
42
33
|
const lv = headingLevel(line);
|
|
@@ -45,38 +36,32 @@ export function listHeadings(md) {
|
|
|
45
36
|
return [{ level: lv, text: line.replace(/^#+\s*/, '').trim(), line: i }];
|
|
46
37
|
});
|
|
47
38
|
}
|
|
48
|
-
/**
|
|
49
|
-
* property-class.md のテーブルを全て解析して PropRow[] を返す。
|
|
50
|
-
* `| Prop | CSS プロパティ | ...` 形式のテーブルのみ対象とする。
|
|
51
|
-
*/
|
|
39
|
+
/** Property Classの対象テーブルを解析してPropRowへ変換する。 */
|
|
52
40
|
export function parsePropRows(md) {
|
|
53
41
|
const lines = md.split('\n');
|
|
54
42
|
const rows = [];
|
|
55
43
|
let currentSection = '';
|
|
56
44
|
let inPropTable = false;
|
|
45
|
+
// 見出しと対象テーブルの範囲を追跡する。
|
|
57
46
|
for (const line of lines) {
|
|
58
47
|
const lv = headingLevel(line);
|
|
59
|
-
// セクション見出しを追跡(### レベル)
|
|
60
48
|
if (lv >= 2) {
|
|
61
49
|
currentSection = line.replace(/^#+\s*/, '').trim();
|
|
62
50
|
inPropTable = false;
|
|
63
51
|
continue;
|
|
64
52
|
}
|
|
65
|
-
// Property Class テーブルのヘッダー行を検出
|
|
66
53
|
if (line.includes('Prop') && line.includes('CSS プロパティ')) {
|
|
67
54
|
inPropTable = true;
|
|
68
55
|
continue;
|
|
69
56
|
}
|
|
70
|
-
// 区切り行はスキップ
|
|
71
57
|
if (inPropTable && /^\|[-\s|:]+\|/.test(line)) {
|
|
72
58
|
continue;
|
|
73
59
|
}
|
|
74
|
-
// テーブルの終了を検出
|
|
75
60
|
if (inPropTable && !line.startsWith('|')) {
|
|
76
61
|
inPropTable = false;
|
|
77
62
|
continue;
|
|
78
63
|
}
|
|
79
|
-
//
|
|
64
|
+
// 対象テーブルの各行をPropRowへ変換する。
|
|
80
65
|
if (inPropTable && line.startsWith('|')) {
|
|
81
66
|
const cells = line
|
|
82
67
|
.split('|')
|
|
@@ -84,9 +69,7 @@ export function parsePropRows(md) {
|
|
|
84
69
|
.filter(Boolean);
|
|
85
70
|
if (cells.length >= 2) {
|
|
86
71
|
const prop = cells[0].replace(/`/g, '').trim();
|
|
87
|
-
// CSS プロパティ: バッククォート除去、括弧内の注釈は保持しない
|
|
88
72
|
const cssPropertyRaw = cells[1].replace(/`/g, '').trim();
|
|
89
|
-
// `line-height`(`--hl` 経由) のような括弧注釈を除去
|
|
90
73
|
const cssProperty = cssPropertyRaw
|
|
91
74
|
.replace(/([^)]*)$/, '')
|
|
92
75
|
.replace(/\([^)]*\)$/, '')
|
|
@@ -103,11 +86,7 @@ export function parsePropRows(md) {
|
|
|
103
86
|
// ----------------------------------------------------------------
|
|
104
87
|
// コンポーネント検索
|
|
105
88
|
// ----------------------------------------------------------------
|
|
106
|
-
/**
|
|
107
|
-
* Markdown からコンポーネント名に一致するセクションを探して返す。
|
|
108
|
-
*
|
|
109
|
-
* components-ui.md のように各コンポーネントが `## ComponentName` で始まる場合に有効。
|
|
110
|
-
*/
|
|
89
|
+
/** 各コンポーネントが`## ComponentName`で始まる文書向け。 */
|
|
111
90
|
export function findComponentByHeading(md, name) {
|
|
112
91
|
return extractSection(md, name);
|
|
113
92
|
}
|
|
@@ -119,10 +98,9 @@ export function findComponentByHeading(md, name) {
|
|
|
119
98
|
export function findComponentInTables(md, name) {
|
|
120
99
|
const nameLower = name.toLowerCase();
|
|
121
100
|
const lines = md.split('\n');
|
|
122
|
-
// コンポーネント名のパターン: `<Flex>`, `<flex>`, または単純に "flex" がテーブル行に含まれるか
|
|
123
101
|
const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
124
102
|
const pattern = new RegExp(`\`?<${escaped}>?\`?`, 'i');
|
|
125
|
-
//
|
|
103
|
+
// コンポーネントを含むテーブル行を探す。
|
|
126
104
|
let targetLineIdx = -1;
|
|
127
105
|
for (let i = 0; i < lines.length; i++) {
|
|
128
106
|
if (lines[i].startsWith('|') && (pattern.test(lines[i]) || lines[i].toLowerCase().includes(`\`${nameLower}\``))) {
|
|
@@ -132,7 +110,7 @@ export function findComponentInTables(md, name) {
|
|
|
132
110
|
}
|
|
133
111
|
if (targetLineIdx === -1)
|
|
134
112
|
return '';
|
|
135
|
-
//
|
|
113
|
+
// 対象行を含む##節の範囲を決める。
|
|
136
114
|
let sectionStart = -1;
|
|
137
115
|
let sectionLevel = 0;
|
|
138
116
|
for (let i = targetLineIdx; i >= 0; i--) {
|
|
@@ -145,7 +123,6 @@ export function findComponentInTables(md, name) {
|
|
|
145
123
|
}
|
|
146
124
|
if (sectionStart === -1)
|
|
147
125
|
return lines.slice(0, targetLineIdx + 20).join('\n');
|
|
148
|
-
// セクションの終端を探す
|
|
149
126
|
let sectionEnd = lines.length;
|
|
150
127
|
for (let i = sectionStart + 1; i < lines.length; i++) {
|
|
151
128
|
const lv = headingLevel(lines[i]);
|
package/dist/lib/search.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { DocsEntry, SearchResult } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Property Class 記法(例: "-g:5", ".-p:20", "-fz")から prop 名を抽出する。
|
|
4
|
-
* get-props-system.ts からも利用される共通ユーティリティ。
|
|
5
|
-
*/
|
|
2
|
+
/** Property Class記法からprop名を取り出す。get-props-system.tsからも利用する。 */
|
|
6
3
|
export declare function parsePropClassName(input: string): string | null;
|
|
7
4
|
export interface SearchDocsOptions {
|
|
8
5
|
category?: string;
|
package/dist/lib/search.js
CHANGED
|
@@ -4,32 +4,22 @@ function tokenize(text) {
|
|
|
4
4
|
.split(/[\s\-_./]+/)
|
|
5
5
|
.filter((t) => t.length > 0);
|
|
6
6
|
}
|
|
7
|
-
// ".-g:5" or "-g:5" → prop="g", value="5" / "-p" → prop="p"
|
|
8
7
|
const PROP_CLASS_RE = /^\.?-([a-z][a-z0-9-]*)(:.+)?$/i;
|
|
9
|
-
/**
|
|
10
|
-
* Property Class 記法(例: "-g:5", ".-p:20", "-fz")から prop 名を抽出する。
|
|
11
|
-
* get-props-system.ts からも利用される共通ユーティリティ。
|
|
12
|
-
*/
|
|
8
|
+
/** Property Class記法からprop名を取り出す。get-props-system.tsからも利用する。 */
|
|
13
9
|
export function parsePropClassName(input) {
|
|
14
10
|
const m = input.match(PROP_CLASS_RE);
|
|
15
11
|
return m ? m[1].toLowerCase() : null;
|
|
16
12
|
}
|
|
17
|
-
/**
|
|
18
|
-
* 検索クエリをCSSプロパティ名やProperty Class記法で展開する。
|
|
19
|
-
* 例: "font-size" → "font-size fz"
|
|
20
|
-
* 例: "-g:5" → "-g:5 g gap property class"
|
|
21
|
-
*/
|
|
13
|
+
/** CSSプロパティとProperty Classを相互展開して検索語を補う。 */
|
|
22
14
|
function expandQuery(query, cssPropertyMap) {
|
|
23
15
|
const additions = [];
|
|
24
16
|
const queryLower = query.toLowerCase();
|
|
25
17
|
const parsedProp = parsePropClassName(queryLower.trim());
|
|
26
18
|
if (cssPropertyMap) {
|
|
27
19
|
for (const [cssProp, lismProps] of cssPropertyMap) {
|
|
28
|
-
// Property Class 記法の逆引き(例: "-g:5" の "g" → "gap")
|
|
29
20
|
if (parsedProp && lismProps.includes(parsedProp)) {
|
|
30
21
|
additions.push(cssProp);
|
|
31
22
|
}
|
|
32
|
-
// CSSプロパティ名の展開(例: "font-size" → "fz")
|
|
33
23
|
if (queryLower.includes(cssProp)) {
|
|
34
24
|
additions.push(...lismProps);
|
|
35
25
|
}
|
|
@@ -47,20 +37,16 @@ function scoreEntry(entry, queryTokens) {
|
|
|
47
37
|
const headingsLower = entry.headings.join(' ').toLowerCase();
|
|
48
38
|
const keywordsLower = entry.keywords.join(' ').toLowerCase();
|
|
49
39
|
const snippetLower = entry.snippet.toLowerCase();
|
|
40
|
+
// titleからsnippetへ順に重みを下げる。
|
|
50
41
|
for (const token of queryTokens) {
|
|
51
|
-
// title matches are weighted highest
|
|
52
42
|
if (titleLower.includes(token))
|
|
53
43
|
score += 10;
|
|
54
|
-
// keywords
|
|
55
44
|
if (keywordsLower.includes(token))
|
|
56
45
|
score += 5;
|
|
57
|
-
// headings
|
|
58
46
|
if (headingsLower.includes(token))
|
|
59
47
|
score += 3;
|
|
60
|
-
// description
|
|
61
48
|
if (descLower.includes(token))
|
|
62
49
|
score += 2;
|
|
63
|
-
// snippet
|
|
64
50
|
if (snippetLower.includes(token))
|
|
65
51
|
score += 1;
|
|
66
52
|
}
|
|
@@ -68,7 +54,7 @@ function scoreEntry(entry, queryTokens) {
|
|
|
68
54
|
}
|
|
69
55
|
export function searchDocs(entries, query, options) {
|
|
70
56
|
const { category, limit = 10, cssPropertyMap, guideTopics } = options ?? {};
|
|
71
|
-
// CSS
|
|
57
|
+
// CSSプロパティ名とProperty Class記法も同じ検索対象へ展開する。
|
|
72
58
|
const expandedQuery = expandQuery(query, cssPropertyMap);
|
|
73
59
|
const queryTokens = tokenize(expandedQuery);
|
|
74
60
|
if (queryTokens.length === 0)
|
|
@@ -85,29 +71,32 @@ export function searchDocs(entries, query, options) {
|
|
|
85
71
|
.filter(({ score }) => score > 0)
|
|
86
72
|
.sort((a, b) => b.score - a.score)
|
|
87
73
|
.slice(0, limit);
|
|
88
|
-
const DOCS_BASE_URL = 'https://lism-css.com/docs';
|
|
89
74
|
return scored.map(({ entry, score }) => ({
|
|
90
75
|
sourcePath: entry.sourcePath,
|
|
91
|
-
url:
|
|
76
|
+
url: slugToPageUrl(sourcePathToUrlSlug(entry.sourcePath)),
|
|
92
77
|
heading: entry.title,
|
|
93
78
|
snippet: entry.snippet,
|
|
94
79
|
score,
|
|
95
80
|
nextTool: getNextTool(entry, guideTopics),
|
|
96
81
|
}));
|
|
97
82
|
}
|
|
98
|
-
|
|
83
|
+
const SITE_BASE_URL = 'https://lism-css.com';
|
|
84
|
+
/**
|
|
85
|
+
* URL スラッグを公開ページの URL に変換する。
|
|
86
|
+
* `ui/` 配下はサイト直下(`/ui/...`)、それ以外は `/docs/` 配下で公開される
|
|
87
|
+
* (apps/docs の `getPostUrl` と同じルーティング規則)。
|
|
88
|
+
*/
|
|
89
|
+
function slugToPageUrl(slug) {
|
|
90
|
+
return slug.startsWith('ui/') ? `${SITE_BASE_URL}/${slug}/` : `${SITE_BASE_URL}/docs/${slug}/`;
|
|
91
|
+
}
|
|
99
92
|
function getBasename(withoutExt) {
|
|
100
93
|
const parts = withoutExt.split('/');
|
|
101
94
|
return parts[parts.length - 1];
|
|
102
95
|
}
|
|
103
|
-
/**
|
|
104
|
-
* 検索結果のページを詳しく見るための推奨フォローアップツール呼び出しを返す。
|
|
105
|
-
* sourcePath による判定をカテゴリによる判定より優先する。
|
|
106
|
-
*/
|
|
96
|
+
/** 検索結果を掘り下げる推奨ツールを返す。カテゴリよりsourcePathの規則を優先する。 */
|
|
107
97
|
function getNextTool(entry, guideTopics) {
|
|
108
98
|
const withoutExt = entry.sourcePath.replace(/\.mdx$/, '');
|
|
109
99
|
const basename = getBasename(withoutExt);
|
|
110
|
-
// sourcePath ベースの判定(category より優先)
|
|
111
100
|
if (withoutExt === 'core-components/lism-props') {
|
|
112
101
|
return 'get_props_system()';
|
|
113
102
|
}
|
|
@@ -120,12 +109,10 @@ function getNextTool(entry, guideTopics) {
|
|
|
120
109
|
if (withoutExt.startsWith('property-class/')) {
|
|
121
110
|
return `get_props_system(prop: "${basename}")`;
|
|
122
111
|
}
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
if (withoutExt.startsWith('ui/examples/')) {
|
|
112
|
+
// 実装例ページはパッケージ提供コンポーネントではないためget_componentでは解決できない。
|
|
113
|
+
if (withoutExt.startsWith('ui/block-examples/') || withoutExt.startsWith('ui/components/')) {
|
|
126
114
|
return null;
|
|
127
115
|
}
|
|
128
|
-
// category ベースの判定
|
|
129
116
|
switch (entry.category) {
|
|
130
117
|
case 'core-components':
|
|
131
118
|
return `get_component(name: "${basename}")`;
|
|
@@ -147,12 +134,6 @@ function getNextTool(entry, guideTopics) {
|
|
|
147
134
|
* IMPORTANT: `apps/docs/src/lib/contentSlug.ts` の `toContentSlug` と必ず同じロジックに保つこと。
|
|
148
135
|
* 別ワークスペース(apps/docs)なので直接 import できず、ローカル実装で複製している。
|
|
149
136
|
* apps/docs 側を変更した場合は必ずここも合わせて更新する。
|
|
150
|
-
*
|
|
151
|
-
* 例:
|
|
152
|
-
* `primitives/l--tileGrid.mdx` → `primitives/l--tileGrid`
|
|
153
|
-
* `trait-class/is--boxLink.mdx` → `trait-class/is--boxLink`
|
|
154
|
-
* `core-components/Group.mdx` → `core-components/group`
|
|
155
|
-
* `ui/DummyText.mdx` → `ui/dummytext`
|
|
156
137
|
*/
|
|
157
138
|
const PRESERVE_CASE_PREFIXES = ['primitives/', 'trait-class/'];
|
|
158
139
|
export function sourcePathToUrlSlug(sourcePath) {
|