@godxjp/ui 19.2.0 → 19.4.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/components/data-display/badge.d.ts +26 -2
- package/dist/components/data-display/badge.js +20 -5
- package/dist/components/data-display/index.d.ts +2 -0
- package/dist/components/data-display/index.js +2 -0
- package/dist/components/data-display/popover.d.ts +13 -1
- package/dist/components/data-display/popover.js +3 -1
- package/dist/components/data-display/table.d.ts +19 -2
- package/dist/components/data-display/table.js +4 -1
- package/dist/components/data-display/timeline-grid.d.ts +18 -0
- package/dist/components/data-display/timeline-grid.js +222 -0
- package/dist/components/data-entry/cascader.js +4 -6
- package/dist/components/data-entry/checkbox.js +1 -1
- package/dist/components/data-entry/search-select.js +5 -7
- package/dist/components/data-entry/select.js +32 -28
- package/dist/components/data-entry/tree-select.js +4 -6
- package/dist/components/general/inert-background.d.ts +5 -0
- package/dist/components/general/inert-background.js +48 -0
- package/dist/components/layout/auth-shell.d.ts +4 -2
- package/dist/components/layout/auth-shell.js +7 -1
- package/dist/components/layout/centered-shell.d.ts +2 -2
- package/dist/components/layout/flex.d.ts +1 -1
- package/dist/components/layout/flex.js +2 -1
- package/dist/components/layout/index.d.ts +3 -0
- package/dist/components/layout/index.js +2 -0
- package/dist/components/layout/mobile-shell.d.ts +21 -0
- package/dist/components/layout/mobile-shell.js +43 -0
- package/dist/components/layout/sidebar-link.d.ts +1 -1
- package/dist/components/navigation/context-menu.js +13 -9
- package/dist/components/navigation/dropdown-menu.js +17 -13
- package/dist/inertia/index.d.ts +1 -1
- package/dist/lib/variants.d.ts +3 -3
- package/dist/lib/variants.js +1 -0
- package/dist/props/components/data-display.prop.d.ts +72 -0
- package/dist/props/components/data-entry.prop.d.ts +1 -1
- package/dist/props/components/layout.prop.d.ts +93 -6
- package/dist/props/registry.d.ts +113 -2
- package/dist/props/registry.js +155 -1
- package/dist/props/vocabulary/data.prop.d.ts +6 -0
- package/dist/props/vocabulary/index.d.ts +3 -3
- package/dist/props/vocabulary/layout.prop.d.ts +17 -2
- package/dist/props/vocabulary/shared.prop.d.ts +7 -0
- package/dist/styles/badge-layout.css +15 -0
- package/dist/styles/control.css +18 -1
- package/dist/styles/data-display-layout.css +167 -0
- package/dist/styles/layout.css +7 -0
- package/dist/styles/shell-layout.css +148 -0
- package/dist/styles/table-layout.css +23 -4
- package/dist/tokens/components/badge.css +8 -0
- package/dist/tokens/components/control.css +1 -0
- package/dist/tokens/components/data-display.css +20 -0
- package/dist/tokens/components/shell.css +22 -0
- package/dist/tokens/components/table.css +2 -0
- package/docs/SPACING.md +19 -6
- package/docs/charts/compact-bar-trend.tsx +5 -6
- package/docs/data-display/avatar.tsx +7 -9
- package/docs/data-display/badge.tsx +37 -1
- package/docs/data-display/card/index.tsx +6 -4
- package/docs/data-display/carousel.tsx +8 -4
- package/docs/data-display/data-table/examples/approval-queue.tsx +1 -1
- package/docs/data-display/data-table/examples/grid-features.tsx +1 -1
- package/docs/data-display/data-table/index.tsx +1 -1
- package/docs/data-display/permission-matrix.tsx +15 -11
- package/docs/data-display/popover.tsx +2 -1
- package/docs/data-display/scroll-area.tsx +108 -76
- package/docs/data-display/table.tsx +2 -2
- package/docs/data-display/timeline-grid.tsx +119 -0
- package/docs/data-entry/branch-scope-picker.tsx +1 -1
- package/docs/data-entry/calendar.tsx +1 -1
- package/docs/data-entry/checkbox.tsx +1 -1
- package/docs/data-entry/country-picker-recipe.tsx +11 -6
- package/docs/data-entry/form-field/index.tsx +33 -29
- package/docs/data-entry/form-root.tsx +1 -1
- package/docs/data-entry/input-otp.tsx +1 -1
- package/docs/data-entry/password-input.tsx +1 -5
- package/docs/data-entry/select.tsx +7 -7
- package/docs/data-entry/textarea.tsx +3 -3
- package/docs/data-entry/toggle-count.tsx +1 -1
- package/docs/feedback/alert.tsx +1 -1
- package/docs/feedback/banner.tsx +1 -1
- package/docs/feedback/sheet.tsx +112 -102
- package/docs/feedback/skeleton.tsx +2 -2
- package/docs/foundation/colors.tsx +8 -6
- package/docs/foundation/email-tokens.tsx +83 -66
- package/docs/foundation/radius-shadow.tsx +13 -11
- package/docs/general/activity.tsx +1 -1
- package/docs/layout/app-shell.tsx +2 -2
- package/docs/layout/aspect-ratio.tsx +30 -14
- package/docs/layout/auth-account-summary.tsx +1 -1
- package/docs/layout/auth-recovery/examples/mobile-390.tsx +1 -1
- package/docs/layout/auth-recovery/examples/password-recovery.tsx +0 -2
- package/docs/layout/auth-shell-context.tsx +1 -1
- package/docs/layout/auth-shell-device.tsx +2 -2
- package/docs/layout/auth-shell-registration.tsx +1 -1
- package/docs/layout/auth-shell.tsx +1 -1
- package/docs/layout/flex.tsx +6 -2
- package/docs/layout/master-detail.tsx +2 -2
- package/docs/layout/mobile-shell.tsx +101 -0
- package/docs/layout/page-container.tsx +15 -7
- package/docs/layout/responsive-grid.tsx +12 -4
- package/docs/layout/separator.tsx +2 -2
- package/docs/layout/service-role-panel.tsx +1 -1
- package/docs/layout/sidebar.tsx +175 -152
- package/docs/layout/split-pane.tsx +45 -28
- package/docs/layout/topbar.tsx +19 -23
- package/docs/navigation/app-setting-picker.tsx +5 -4
- package/docs/navigation/breadcrumb.tsx +12 -5
- package/docs/navigation/context-menu.tsx +10 -4
- package/docs/navigation/filter-bar.tsx +2 -2
- package/docs/navigation/navigation-menu.tsx +89 -96
- package/docs/navigation/pagination.tsx +2 -2
- package/docs/navigation/steps.tsx +13 -11
- package/docs/navigation/tabs.tsx +27 -21
- package/docs/navigation/toolbar.tsx +15 -15
- package/docs/providers/format-date.tsx +2 -2
- package/docs/showcase/acme-portal.tsx +41 -28
- package/docs/showcase/acme-website.tsx +67 -61
- package/docs/showcase/case1-warehouse-dashboard.tsx +46 -31
- package/docs/showcase/case2-employee-me.tsx +33 -36
- package/docs/showcase/case3-approval-workflow.tsx +34 -32
- package/docs/showcase/case4-login.tsx +95 -101
- package/docs/showcase/case5-shift-calendar.tsx +182 -281
- package/docs/showcase/case6-agency-handy.tsx +514 -470
- package/docs/showcase/futurelastic-web.tsx +32 -29
- package/docs/showcase/org-switcher.tsx +20 -13
- package/docs/showcase/permission-matrix.tsx +20 -17
- package/docs/showcase/public-landing.tsx +1 -1
- package/docs/showcase/settings-account-sections.tsx +2 -2
- package/docs/showcase/settings-security-mfa.tsx +3 -3
- package/docs/showcase/table-approval-queue.tsx +1 -1
- package/docs/showcase/table-bulk-actions.tsx +49 -52
- package/docs/showcase/table-conditional-format.tsx +9 -9
- package/docs/showcase/table-crud-list.tsx +4 -4
- package/docs/showcase/table-density.tsx +49 -42
- package/docs/showcase/table-expandable-rows.tsx +112 -100
- package/docs/showcase/table-filter-chips.tsx +78 -71
- package/docs/showcase/table-footer-totals.tsx +30 -23
- package/docs/showcase/table-grouped-subtotals.tsx +31 -25
- package/docs/showcase/table-master-detail.tsx +27 -24
- package/docs/showcase/table-pagination.tsx +34 -27
- package/docs/showcase/table-states.tsx +42 -34
- package/docs/showcase/table-sticky-columns.tsx +11 -7
- package/docs/showcase/table-tree-rows.tsx +22 -15
- package/docs/showcase/table-view-tabs.tsx +12 -14
- package/package.json +7 -7
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
*
|
|
11
11
|
* row model ........ flatten an org tree to rows carrying { depth, hasChildren,
|
|
12
12
|
* expanded }, then derive `visibleRows` from the open set.
|
|
13
|
-
* tree column ...... ColumnDef.render
|
|
14
|
-
*
|
|
15
|
-
* (ghost icon-sm) that rotates 90° when
|
|
16
|
-
* ONLY on parent rows; leaves get an
|
|
13
|
+
* tree column ...... ColumnDef.render indents one --table-cell-indent-space-step
|
|
14
|
+
* per level (the token `<TableCell indent>` reads) + a twirl
|
|
15
|
+
* chevron Button (ghost icon-sm) that rotates 90° when
|
|
16
|
+
* expanded — rendered ONLY on parent rows; leaves get an
|
|
17
|
+
* aligning spacer.
|
|
17
18
|
* metrics .......... 出勤率 / 遅刻 / 残業 as tabular-nums columns; 承認状態 as Badge(tone).
|
|
18
19
|
* chrome ........... DataTable.Toolbar + DensityToggle + sticky header (built in).
|
|
19
20
|
*
|
|
@@ -242,9 +243,12 @@ const hours = new Intl.NumberFormat("ja-JP", {
|
|
|
242
243
|
});
|
|
243
244
|
|
|
244
245
|
// ── Tree name cell ───────────────────────────────────────────────────────────────
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
246
|
+
// One `--table-cell-indent-space-step` per level — the SAME token `<TableCell indent>`
|
|
247
|
+
// reads, so the tree and a hand-authored table indent on one contract and a service
|
|
248
|
+
// retunes the step in one place. DataTable owns the `<td>` here (the column `render`
|
|
249
|
+
// receives no cell), so the level is applied to the cell's content instead of the cell.
|
|
250
|
+
// Twirl chevron is rendered ONLY on parent rows; leaves get a spacer so names stay
|
|
251
|
+
// aligned at the same depth.
|
|
248
252
|
|
|
249
253
|
function TreeCell({
|
|
250
254
|
row,
|
|
@@ -256,9 +260,12 @@ function TreeCell({
|
|
|
256
260
|
onToggle: (id: string) => void;
|
|
257
261
|
}) {
|
|
258
262
|
return (
|
|
259
|
-
<
|
|
260
|
-
|
|
261
|
-
|
|
263
|
+
<Flex
|
|
264
|
+
align="center"
|
|
265
|
+
gap="xs"
|
|
266
|
+
style={{
|
|
267
|
+
paddingInlineStart: `calc(var(--table-cell-indent-space-step) * ${row.depth})`,
|
|
268
|
+
}}
|
|
262
269
|
>
|
|
263
270
|
{row.hasChildren ? (
|
|
264
271
|
<Button
|
|
@@ -284,15 +291,15 @@ function TreeCell({
|
|
|
284
291
|
className="inline-block size-[calc(var(--control-height)-0.5rem)] shrink-0"
|
|
285
292
|
/>
|
|
286
293
|
)}
|
|
287
|
-
<
|
|
294
|
+
<Flex align="center" gap="sm" className="min-w-0">
|
|
288
295
|
<Text weight={row.kind === "従業員" ? "regular" : "medium"} truncate>
|
|
289
296
|
{row.name}
|
|
290
297
|
</Text>
|
|
291
298
|
<Badge variant="outline" tone="neutral" className="shrink-0">
|
|
292
299
|
{row.kind}
|
|
293
300
|
</Badge>
|
|
294
|
-
</
|
|
295
|
-
</
|
|
301
|
+
</Flex>
|
|
302
|
+
</Flex>
|
|
296
303
|
);
|
|
297
304
|
}
|
|
298
305
|
|
|
@@ -391,7 +398,7 @@ function InteractiveTree() {
|
|
|
391
398
|
);
|
|
392
399
|
}
|
|
393
400
|
|
|
394
|
-
// ── Fully-expanded static tree (proves all depth levels + the
|
|
401
|
+
// ── Fully-expanded static tree (proves all depth levels + the per-level indent) ──
|
|
395
402
|
|
|
396
403
|
function ExpandedTree() {
|
|
397
404
|
const open = React.useMemo(() => allParentIds(TREE), []);
|
|
@@ -417,7 +424,7 @@ export default function Demo() {
|
|
|
417
424
|
return (
|
|
418
425
|
<PageContainer
|
|
419
426
|
title="ツリー行"
|
|
420
|
-
subtitle="階層行 (部署 → チーム → 従業員) ·
|
|
427
|
+
subtitle="階層行 (部署 → チーム → 従業員) · 階層ごとのインデント · 親行のみ開閉トグル · 勤怠ロールアップ"
|
|
421
428
|
density="compact"
|
|
422
429
|
>
|
|
423
430
|
<Flex direction="col" gap="lg">
|
|
@@ -367,22 +367,20 @@ const DOT_CLASS: Record<SavedView["dot"], string> = {
|
|
|
367
367
|
neutral: "bg-muted-foreground",
|
|
368
368
|
};
|
|
369
369
|
|
|
370
|
+
// TabsTrigger renders a <button>, whose content model is phrasing content only — so the row and
|
|
371
|
+
// the count chip take `as="span"`. Before Flex/Badge had that seam the only valid shape here was a
|
|
372
|
+
// raw `<span className="flex …">`, i.e. utility layout (gh#354).
|
|
370
373
|
function ViewTrigger({ view, count }: { view: SavedView; count: number }) {
|
|
371
374
|
return (
|
|
372
|
-
<span
|
|
375
|
+
<Flex as="span" align="center" gap="sm">
|
|
373
376
|
<span aria-hidden="true" className={`size-2 rounded-full ${DOT_CLASS[view.dot]}`} />
|
|
374
377
|
<span>{view.label}</span>
|
|
375
|
-
<
|
|
376
|
-
as="span"
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
className="bg-muted inline-flex min-w-5 items-center justify-center rounded-full px-1.5"
|
|
382
|
-
>
|
|
383
|
-
{count}
|
|
384
|
-
</Text>
|
|
385
|
-
</span>
|
|
378
|
+
<Badge as="span" tone="neutral" shape="pill">
|
|
379
|
+
<Text as="span" size="2xs" weight="medium" tabular>
|
|
380
|
+
{count}
|
|
381
|
+
</Text>
|
|
382
|
+
</Badge>
|
|
383
|
+
</Flex>
|
|
386
384
|
);
|
|
387
385
|
}
|
|
388
386
|
|
|
@@ -436,12 +434,12 @@ export default function Demo() {
|
|
|
436
434
|
<Flex direction="col" gap="md">
|
|
437
435
|
{/* Saved-view ribbon — controlled Tabs; switching swaps the preset below. */}
|
|
438
436
|
<Tabs value={view} onValueChange={(v) => setView(v as ViewId)}>
|
|
439
|
-
<TabsList variant="line" className="h-auto flex-wrap
|
|
437
|
+
<TabsList variant="line" className="h-auto w-full flex-wrap justify-start border-b">
|
|
440
438
|
{VIEWS.map((v) => (
|
|
441
439
|
<TabsTrigger
|
|
442
440
|
key={v.id}
|
|
443
441
|
value={v.id}
|
|
444
|
-
className="
|
|
442
|
+
className="rounded-[var(--tabs-trigger-line-radius)] px-[var(--tabs-trigger-line-padding-x)] py-[var(--tabs-trigger-line-padding-y)]"
|
|
445
443
|
>
|
|
446
444
|
<ViewTrigger view={v} count={counts[v.id]} />
|
|
447
445
|
</TabsTrigger>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@godxjp/ui",
|
|
3
|
-
"version": "19.
|
|
4
|
-
"godxUiMcp": "19.
|
|
3
|
+
"version": "19.4.0",
|
|
4
|
+
"godxUiMcp": "19.4.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -333,17 +333,17 @@
|
|
|
333
333
|
"check:frame-contracts": "pnpm check:component-api-manifest && pnpm audit:component-cases && pnpm check:frame-coverage && pnpm check:frame-coverage-ledger && pnpm check:screen-reader-evidence && pnpm check:data-entry-owner-source && pnpm check:display-runtime-evidence",
|
|
334
334
|
"check:final-touch-rtl": "node scripts/check-final-touch-rtl.mjs",
|
|
335
335
|
"check:frame-runtime": "pnpm check:data-entry-frame-runtime && pnpm check:data-entry-touch-aria && pnpm check:layout-nav-frames && pnpm check:provider-feedback-query-runtime && pnpm check:layout-nav-closure && pnpm check:final-touch-rtl && pnpm check:data-table-pagination-wrap && pnpm check:button-icon-xs",
|
|
336
|
-
"
|
|
337
|
-
"verify": "pnpm
|
|
338
|
-
"verify:
|
|
339
|
-
"verify:ci": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync
|
|
340
|
-
"verify:ci:static": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:no-external-assets && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync",
|
|
336
|
+
"verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:no-external-assets && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:frame-coverage && pnpm test",
|
|
337
|
+
"verify:static": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync && pnpm check:contrast && pnpm check:visual-audit && pnpm test",
|
|
338
|
+
"verify:ci": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync && pnpm test",
|
|
339
|
+
"verify:ci:static": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:no-external-assets && pnpm check:token-scale-bypass && pnpm check:dist-tokens-resolve && pnpm check:no-hardcoded-geometry && pnpm check:no-hardcoded-css-values && pnpm check:no-inline-magic-numbers && pnpm check:no-tailwind-class-assertions && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:doc-prop-existence && pnpm check:mcp-catalog-coverage && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync",
|
|
341
340
|
"verify:browser": "pnpm check:contrast && pnpm check:visual-audit",
|
|
342
341
|
"verify:release": "pnpm verify:static && pnpm check:frame-contracts && pnpm check:frame-coverage && pnpm check:frame-axe",
|
|
343
342
|
"verify:publish-tree": "pnpm build && pnpm check:packed-public-contract && pnpm check:use-client && pnpm check:dist-tokens-resolve",
|
|
344
343
|
"check:release-plan": "node scripts/check-release-command-plan.mjs",
|
|
345
344
|
"check:packed-public-contract": "node scripts/check-packed-public-contract.mjs",
|
|
346
345
|
"check:mcp-pattern-imports": "node scripts/check-mcp-pattern-imports.mjs",
|
|
346
|
+
"check:mcp-lockstep": "node scripts/check-release-lockstep.mjs",
|
|
347
347
|
"check:mcp-sync": "node scripts/check-mcp-sync.mjs",
|
|
348
348
|
"check:mcp-catalog-coverage": "node scripts/check-mcp-catalog-coverage.mjs",
|
|
349
349
|
"check:mcp-orphans": "node scripts/check-mcp-orphans.mjs",
|