ingred-ui 25.13.3 → 26.0.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/bin/README.md +69 -0
- package/bin/codemods/palette-v2.mjs +315 -0
- package/bin/ingred-ui-codemod.mjs +93 -0
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/DataTable2/types/tableActions.d.ts +2 -2
- package/dist/components/FilterTagInput/FilterTagInput.stories.d.ts +2 -2
- package/dist/index.es.js +669 -666
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +390 -387
- package/dist/index.js.map +1 -1
- package/dist/styles/color.d.ts +17 -11
- package/dist/themes/palette.d.ts +14 -12
- package/package.json +6 -2
package/bin/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ingred-ui-codemod
|
|
2
|
+
|
|
3
|
+
INGRED UI のメジャーバージョンアップに伴う破壊的変更を、利用側プロジェクトのコードに自動適用するための CLI ツールです。
|
|
4
|
+
|
|
5
|
+
## インストール不要
|
|
6
|
+
|
|
7
|
+
`npx` で直接実行できます(`ingred-ui` がインストールされていれば利用可能)。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx ingred-ui-codemod <codemod名> <対象ディレクトリ> [オプション]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 利用可能な codemod
|
|
14
|
+
|
|
15
|
+
### `palette-v2`
|
|
16
|
+
|
|
17
|
+
カラーパレット v2 への移行を自動化します。`.ts` / `.tsx` ファイルを対象に、旧パレット参照を新しい命名体系に一括置換します。
|
|
18
|
+
|
|
19
|
+
**実行例:**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# まず dry-run で変更箇所を確認
|
|
23
|
+
npx ingred-ui-codemod palette-v2 ./src --dry-run
|
|
24
|
+
|
|
25
|
+
# 問題なければ実行
|
|
26
|
+
npx ingred-ui-codemod palette-v2 ./src
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**主な置換内容:**
|
|
30
|
+
|
|
31
|
+
| 旧 | 新 |
|
|
32
|
+
| -------------------------- | --------------------------- |
|
|
33
|
+
| `palette.gray.*` | `palette.neutral.*` |
|
|
34
|
+
| `palette.*.main` | `palette.*.base` |
|
|
35
|
+
| `palette.gray.light` | `palette.neutral.softLight` |
|
|
36
|
+
| `palette.gray.dark` | `palette.neutral.base` |
|
|
37
|
+
| `palette.gray.deepDark` | `palette.neutral.dark` |
|
|
38
|
+
| `palette.primary.light` | `palette.primary.softLight` |
|
|
39
|
+
| `palette.primary.deepDark` | `palette.primary.darker` |
|
|
40
|
+
| `palette.success.light` | `palette.success.lighter` |
|
|
41
|
+
| `palette.danger.light` | `palette.danger.lighter` |
|
|
42
|
+
| `palette.warning.deepDark` | `palette.warning.ultraDark` |
|
|
43
|
+
| `colors.basic` | `colors.gray` |
|
|
44
|
+
| `color="gray"` | `color="neutral"` |
|
|
45
|
+
|
|
46
|
+
**手動対応が必要なもの:**
|
|
47
|
+
|
|
48
|
+
以下のパターンは自動置換せず、警告のみ表示します。
|
|
49
|
+
|
|
50
|
+
- `primaryPale` — 廃止。`palette.primary` の適切なスロットに置き換えてください。
|
|
51
|
+
- `basicDark` — 廃止。`color="neutral"` に置き換えてください。
|
|
52
|
+
- `colors.blue[40]` — 廃止。`colors.blue[50]` に置き換えてください。
|
|
53
|
+
|
|
54
|
+
## オプション
|
|
55
|
+
|
|
56
|
+
| オプション | 説明 |
|
|
57
|
+
| ----------- | ------------------------------------------ |
|
|
58
|
+
| `--dry-run` | ファイルを変更せず、変更箇所のみ表示します |
|
|
59
|
+
| `--help` | ヘルプを表示します |
|
|
60
|
+
|
|
61
|
+
## 対象ファイル
|
|
62
|
+
|
|
63
|
+
- `.ts` / `.tsx` ファイルのみ
|
|
64
|
+
- `node_modules`、`dist`、`build` ディレクトリは自動的に除外されます
|
|
65
|
+
|
|
66
|
+
## 実行後の確認
|
|
67
|
+
|
|
68
|
+
1. TypeScript のビルドを実行して型エラーがないか確認
|
|
69
|
+
2. 見た目に変化がないか Storybook や画面で確認
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
|
|
4
|
+
// ----------------------------------------------------------
|
|
5
|
+
// ファイル探索
|
|
6
|
+
// ----------------------------------------------------------
|
|
7
|
+
|
|
8
|
+
const EXTENSIONS = new Set([".ts", ".tsx"]);
|
|
9
|
+
const EXCLUDE_DIRS = new Set(["node_modules", "dist", "build"]);
|
|
10
|
+
|
|
11
|
+
function findFiles(dir) {
|
|
12
|
+
const results = [];
|
|
13
|
+
|
|
14
|
+
function walk(current) {
|
|
15
|
+
for (const entry of readdirSync(current, { withFileTypes: true })) {
|
|
16
|
+
if (entry.isDirectory()) {
|
|
17
|
+
if (!EXCLUDE_DIRS.has(entry.name)) {
|
|
18
|
+
walk(join(current, entry.name));
|
|
19
|
+
}
|
|
20
|
+
} else if (entry.isFile()) {
|
|
21
|
+
const name = entry.name;
|
|
22
|
+
const dotIdx = name.lastIndexOf(".");
|
|
23
|
+
if (dotIdx !== -1 && EXTENSIONS.has(name.slice(dotIdx))) {
|
|
24
|
+
results.push(join(current, name));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
walk(dir);
|
|
31
|
+
return results;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ----------------------------------------------------------
|
|
35
|
+
// 置換ルール(順序が重要: 特殊 → 汎用)
|
|
36
|
+
// ----------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
const STEPS = [
|
|
39
|
+
{
|
|
40
|
+
label: "[1/6] palette.gray → palette.neutral(段名変更含む)",
|
|
41
|
+
replacements: [
|
|
42
|
+
{
|
|
43
|
+
pattern: /palette\.gray\.deepDark/g,
|
|
44
|
+
replacement: "palette.neutral.dark",
|
|
45
|
+
description: "gray.deepDark → neutral.dark",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
pattern: /palette\.gray\.dark/g,
|
|
49
|
+
replacement: "palette.neutral.base",
|
|
50
|
+
description: "gray.dark → neutral.base",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
pattern: /palette\.gray\.main/g,
|
|
54
|
+
replacement: "palette.neutral.lighter",
|
|
55
|
+
description: "gray.main → neutral.lighter",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
pattern: /palette\.gray\.light/g,
|
|
59
|
+
replacement: "palette.neutral.softLight",
|
|
60
|
+
description: "gray.light → neutral.softLight",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
pattern: /palette\.gray\./g,
|
|
64
|
+
replacement: "palette.neutral.",
|
|
65
|
+
description: "gray.* → neutral.*(残りの段名はそのまま)",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
pattern: /palette\.gray(?![.\w])/g,
|
|
69
|
+
replacement: "palette.neutral",
|
|
70
|
+
description: "palette.gray → palette.neutral(プロパティアクセスなし)",
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
label: "[2/6] colors.basic → colors.gray",
|
|
76
|
+
replacements: [
|
|
77
|
+
{
|
|
78
|
+
pattern: /colors\.basic/g,
|
|
79
|
+
replacement: "colors.gray",
|
|
80
|
+
description: "colors.basic → colors.gray",
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
label: "[3/6] palette.*.main → palette.*.base",
|
|
86
|
+
replacements: [
|
|
87
|
+
{
|
|
88
|
+
pattern: /palette\.primary\.main/g,
|
|
89
|
+
replacement: "palette.primary.base",
|
|
90
|
+
description: "primary.main → primary.base",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
pattern: /palette\.success\.main/g,
|
|
94
|
+
replacement: "palette.success.base",
|
|
95
|
+
description: "success.main → success.base",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
pattern: /palette\.warning\.main/g,
|
|
99
|
+
replacement: "palette.warning.base",
|
|
100
|
+
description: "warning.main → warning.base",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
pattern: /palette\.danger\.main/g,
|
|
104
|
+
replacement: "palette.danger.base",
|
|
105
|
+
description: "danger.main → danger.base",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
pattern: /palette\.neutral\.main/g,
|
|
109
|
+
replacement: "palette.neutral.base",
|
|
110
|
+
description: "neutral.main → neutral.base",
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
label: "[4/6] 段名の修正(旧色値を維持するための付け替え)",
|
|
116
|
+
replacements: [
|
|
117
|
+
{
|
|
118
|
+
pattern: /palette\.primary\.light/g,
|
|
119
|
+
replacement: "palette.primary.softLight",
|
|
120
|
+
description: "primary.light → primary.softLight",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
pattern: /palette\.primary\.deepDark/g,
|
|
124
|
+
replacement: "palette.primary.darker",
|
|
125
|
+
description: "primary.deepDark → primary.darker",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
pattern: /palette\.success\.light/g,
|
|
129
|
+
replacement: "palette.success.lighter",
|
|
130
|
+
description: "success.light → success.lighter",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
pattern: /palette\.success\.deepDark/g,
|
|
134
|
+
replacement: "palette.success.darker",
|
|
135
|
+
description: "success.deepDark → success.darker",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
pattern: /palette\.warning\.deepDark/g,
|
|
139
|
+
replacement: "palette.warning.ultraDark",
|
|
140
|
+
description: "warning.deepDark → warning.ultraDark",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
pattern: /palette\.danger\.light/g,
|
|
144
|
+
replacement: "palette.danger.lighter",
|
|
145
|
+
description: "danger.light → danger.lighter",
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
pattern: /palette\.danger\.deepDark/g,
|
|
149
|
+
replacement: "palette.danger.darker",
|
|
150
|
+
description: "danger.deepDark → danger.darker",
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
label: "[5/6] Button color prop",
|
|
156
|
+
replacements: [
|
|
157
|
+
{
|
|
158
|
+
pattern: /color="gray"/g,
|
|
159
|
+
replacement: 'color="neutral"',
|
|
160
|
+
description: 'color="gray" → color="neutral"',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
pattern: /color='gray'/g,
|
|
164
|
+
replacement: "color='neutral'",
|
|
165
|
+
description: "color='gray' → color='neutral'",
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
const WARNING_PATTERNS = [
|
|
172
|
+
{
|
|
173
|
+
pattern: /primaryPale/,
|
|
174
|
+
description:
|
|
175
|
+
"primaryPale は廃止されました。palette.primary の適切なスロットに置き換えてください。",
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
pattern: /basicDark/,
|
|
179
|
+
description:
|
|
180
|
+
"basicDark は廃止されました。color=\"neutral\" に置き換えてください。",
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
pattern: /blue\[40\]/,
|
|
184
|
+
description:
|
|
185
|
+
"colors.blue[40] は廃止されました。colors.blue[50] に置き換えてください。",
|
|
186
|
+
},
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
// ----------------------------------------------------------
|
|
190
|
+
// メイン処理
|
|
191
|
+
// ----------------------------------------------------------
|
|
192
|
+
|
|
193
|
+
export async function run(targetDir, options = {}) {
|
|
194
|
+
const { dryRun = false } = options;
|
|
195
|
+
|
|
196
|
+
console.log("");
|
|
197
|
+
console.log("==========================================");
|
|
198
|
+
console.log(" INGRED UI パレット v2 移行");
|
|
199
|
+
console.log("==========================================");
|
|
200
|
+
console.log("");
|
|
201
|
+
console.log(`対象: ${targetDir}`);
|
|
202
|
+
if (dryRun) {
|
|
203
|
+
console.log("モード: dry-run(ファイルを変更しません)");
|
|
204
|
+
}
|
|
205
|
+
console.log("");
|
|
206
|
+
|
|
207
|
+
const files = findFiles(targetDir);
|
|
208
|
+
let totalModified = 0;
|
|
209
|
+
|
|
210
|
+
for (const step of STEPS) {
|
|
211
|
+
console.log(step.label);
|
|
212
|
+
|
|
213
|
+
for (const rule of step.replacements) {
|
|
214
|
+
let matchCount = 0;
|
|
215
|
+
const matchedFiles = [];
|
|
216
|
+
|
|
217
|
+
for (const filePath of files) {
|
|
218
|
+
const content = readFileSync(filePath, "utf8");
|
|
219
|
+
|
|
220
|
+
if (rule.pattern.test(content)) {
|
|
221
|
+
// Reset lastIndex after test() for global regex
|
|
222
|
+
rule.pattern.lastIndex = 0;
|
|
223
|
+
const newContent = content.replace(rule.pattern, rule.replacement);
|
|
224
|
+
|
|
225
|
+
if (newContent !== content) {
|
|
226
|
+
matchCount++;
|
|
227
|
+
matchedFiles.push(filePath);
|
|
228
|
+
|
|
229
|
+
if (!dryRun) {
|
|
230
|
+
writeFileSync(filePath, newContent, "utf8");
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Reset lastIndex for next file
|
|
236
|
+
rule.pattern.lastIndex = 0;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (matchCount === 0) {
|
|
240
|
+
console.log(` ✓ ${rule.description} — 該当なし`);
|
|
241
|
+
} else {
|
|
242
|
+
console.log(
|
|
243
|
+
` ✓ ${rule.description} — ${matchCount} ファイル${dryRun ? "(変更予定)" : "置換"}`,
|
|
244
|
+
);
|
|
245
|
+
if (dryRun) {
|
|
246
|
+
for (const f of matchedFiles) {
|
|
247
|
+
console.log(` ${relative(targetDir, f)}`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
console.log("");
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// --- 警告パターン ---
|
|
257
|
+
console.log("[6/6] 手動対応が必要な箇所の検出");
|
|
258
|
+
|
|
259
|
+
let warningCount = 0;
|
|
260
|
+
|
|
261
|
+
for (const warn of WARNING_PATTERNS) {
|
|
262
|
+
const matches = [];
|
|
263
|
+
|
|
264
|
+
for (const filePath of files) {
|
|
265
|
+
const content = readFileSync(filePath, "utf8");
|
|
266
|
+
const lines = content.split("\n");
|
|
267
|
+
|
|
268
|
+
for (let i = 0; i < lines.length; i++) {
|
|
269
|
+
if (warn.pattern.test(lines[i])) {
|
|
270
|
+
matches.push({
|
|
271
|
+
file: relative(targetDir, filePath),
|
|
272
|
+
line: i + 1,
|
|
273
|
+
content: lines[i].trim(),
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (matches.length > 0) {
|
|
280
|
+
warningCount += matches.length;
|
|
281
|
+
console.log("");
|
|
282
|
+
console.log(` ⚠ ${warn.description}`);
|
|
283
|
+
for (const m of matches) {
|
|
284
|
+
console.log(` ${m.file}:${m.line}: ${m.content}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (warningCount === 0) {
|
|
290
|
+
console.log(" 手動対応が必要な箇所はありません。");
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// --- 完了 ---
|
|
294
|
+
console.log("");
|
|
295
|
+
console.log("==========================================");
|
|
296
|
+
console.log(" 完了");
|
|
297
|
+
console.log("==========================================");
|
|
298
|
+
console.log("");
|
|
299
|
+
|
|
300
|
+
if (dryRun) {
|
|
301
|
+
console.log("dry-run モードで実行しました。ファイルは変更されていません。");
|
|
302
|
+
console.log("実際に置換するには --dry-run を外して再実行してください。");
|
|
303
|
+
} else {
|
|
304
|
+
console.log("自動置換が完了しました。");
|
|
305
|
+
if (warningCount > 0) {
|
|
306
|
+
console.log("上記で ⚠ が表示された箇所は手動での対応が必要です。");
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
console.log("");
|
|
311
|
+
console.log("置換後の確認:");
|
|
312
|
+
console.log(" 1. TypeScript のビルドを実行して型エラーがないか確認");
|
|
313
|
+
console.log(" 2. 見た目に変化がないか Storybook や画面で確認");
|
|
314
|
+
console.log("");
|
|
315
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { existsSync, statSync, readdirSync } from "node:fs";
|
|
4
|
+
import { resolve, join, basename } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
|
8
|
+
const codemodsDir = join(__dirname, "codemods");
|
|
9
|
+
|
|
10
|
+
function listCodemods() {
|
|
11
|
+
try {
|
|
12
|
+
return readdirSync(codemodsDir)
|
|
13
|
+
.filter((f) => f.endsWith(".mjs"))
|
|
14
|
+
.map((f) => f.replace(/\.mjs$/, ""));
|
|
15
|
+
} catch {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function printHelp() {
|
|
21
|
+
const codemods = listCodemods();
|
|
22
|
+
|
|
23
|
+
console.log(`
|
|
24
|
+
Usage: ingred-ui-codemod <codemod> <target-dir> [options]
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
--dry-run 変更を書き込まず、変更箇所のみ表示します
|
|
28
|
+
--help このヘルプを表示します
|
|
29
|
+
|
|
30
|
+
利用可能な codemod:
|
|
31
|
+
${codemods.length > 0 ? codemods.map((c) => ` - ${c}`).join("\n") : " (なし)"}
|
|
32
|
+
|
|
33
|
+
例:
|
|
34
|
+
npx ingred-ui-codemod palette-v2 ./src
|
|
35
|
+
npx ingred-ui-codemod palette-v2 ./src --dry-run
|
|
36
|
+
`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// --- Parse arguments ---
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
if (args.includes("--help") || args.length === 0) {
|
|
43
|
+
printHelp();
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const flags = args.filter((a) => a.startsWith("--"));
|
|
48
|
+
const positional = args.filter((a) => !a.startsWith("--"));
|
|
49
|
+
|
|
50
|
+
const codemodName = positional[0];
|
|
51
|
+
const targetDir = positional[1];
|
|
52
|
+
|
|
53
|
+
if (!codemodName) {
|
|
54
|
+
console.error("エラー: codemod 名を指定してください。\n");
|
|
55
|
+
printHelp();
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (!targetDir) {
|
|
60
|
+
console.error("エラー: 対象ディレクトリを指定してください。\n");
|
|
61
|
+
printHelp();
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const resolvedTarget = resolve(targetDir);
|
|
66
|
+
|
|
67
|
+
if (!existsSync(resolvedTarget) || !statSync(resolvedTarget).isDirectory()) {
|
|
68
|
+
console.error(`エラー: ディレクトリが見つかりません: ${resolvedTarget}`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const codemodPath = join(codemodsDir, `${codemodName}.mjs`);
|
|
73
|
+
|
|
74
|
+
if (!existsSync(codemodPath)) {
|
|
75
|
+
const available = listCodemods();
|
|
76
|
+
console.error(`エラー: 不明な codemod "${codemodName}"\n`);
|
|
77
|
+
if (available.length > 0) {
|
|
78
|
+
console.error("利用可能な codemod:");
|
|
79
|
+
available.forEach((c) => console.error(` - ${c}`));
|
|
80
|
+
}
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const dryRun = flags.includes("--dry-run");
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const mod = await import(codemodPath);
|
|
88
|
+
await mod.run(resolvedTarget, { dryRun });
|
|
89
|
+
} catch (err) {
|
|
90
|
+
console.error(`エラー: codemod "${codemodName}" の実行に失敗しました。`);
|
|
91
|
+
console.error(err);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Theme } from "../../themes";
|
|
3
3
|
export type ButtonSize = "small" | "medium" | "large";
|
|
4
|
-
export type ButtonColor = "primary" | "primaryPale" | "basicLight" | "
|
|
4
|
+
export type ButtonColor = "primary" | "primaryPale" | "basicLight" | "neutral" | "danger" | "clear";
|
|
5
5
|
export type ButtonColorStyle = {
|
|
6
6
|
normal: {
|
|
7
7
|
background: string;
|
|
@@ -11,7 +11,7 @@ export type TableAction = {
|
|
|
11
11
|
label: string;
|
|
12
12
|
icon?: React.ReactNode;
|
|
13
13
|
onClick: (selectedRows: string[]) => void;
|
|
14
|
-
color?: "danger" | "primary" | "primaryPale" | "basicLight" | "
|
|
14
|
+
color?: "danger" | "primary" | "primaryPale" | "basicLight" | "neutral" | "clear";
|
|
15
15
|
displayIn?: "toolbar" | "dropdown";
|
|
16
16
|
enabledWhen?: "checked" | "unchecked" | "custom";
|
|
17
17
|
/** 追加の無効化条件。enabledWhenの基本条件に加えて評価される(customの場合はこの関数の結果のみで決定) */
|
|
@@ -28,7 +28,7 @@ export type TableAction = {
|
|
|
28
28
|
label: string;
|
|
29
29
|
icon?: React.ReactNode;
|
|
30
30
|
onClick: (selectedRows: string[]) => void;
|
|
31
|
-
color?: "danger" | "primary" | "primaryPale" | "basicLight" | "
|
|
31
|
+
color?: "danger" | "primary" | "primaryPale" | "basicLight" | "neutral" | "clear";
|
|
32
32
|
enabledWhen?: "checked" | "unchecked" | "custom";
|
|
33
33
|
/** 追加の無効化条件。enabledWhenの基本条件に加えて評価される(customの場合はこの関数の結果のみで決定) */
|
|
34
34
|
disabled?: (checkedRows: string[]) => boolean;
|
|
@@ -22,7 +22,7 @@ export default meta;
|
|
|
22
22
|
* selectOptions={ [
|
|
23
23
|
* {
|
|
24
24
|
* icon: (
|
|
25
|
-
* <Icon name="operator_match" type="line" color={colors.
|
|
25
|
+
* <Icon name="operator_match" type="line" color={colors.gray[900]} />
|
|
26
26
|
* ),
|
|
27
27
|
* label: "含む",
|
|
28
28
|
* },
|
|
@@ -31,7 +31,7 @@ export default meta;
|
|
|
31
31
|
* <Icon
|
|
32
32
|
* name="operator_does_not_match"
|
|
33
33
|
* type="line"
|
|
34
|
-
* color={colors.
|
|
34
|
+
* color={colors.gray[900]}
|
|
35
35
|
* />
|
|
36
36
|
* ),
|
|
37
37
|
* label: "含まない",
|