feat: add registry tools for new preview flow

This commit is contained in:
2026-09-04 19:09:47 +05:00
parent 520a1e1d37
commit 1e9b35406d
11 changed files with 450 additions and 29 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
import { CATEGORIES } from "../categories";
import { CATEGORY_IDS } from "./categories";
import { TOOLS, type ToolEntry } from "../registry-new";
export type PreviewGroup = {
@@ -23,7 +23,7 @@ const GROUP_LABELS: Record<string, string> = {
* Preview-каталог: полный реестр инструментов, сгруппированный по категориям.
* Больше не урезаем до референс-набора — показываем все инструменты из TOOLS.
*/
export const PREVIEW_GROUPS: PreviewGroup[] = CATEGORIES.map((category) => ({
export const PREVIEW_GROUPS: PreviewGroup[] = CATEGORY_IDS.map((category) => ({
id: category,
label: GROUP_LABELS[category] ?? category.toUpperCase(),
tools: TOOLS.filter((tool) => tool.category === category),
+26
View File
@@ -0,0 +1,26 @@
/**
* Категории инструментов для нового registry/preview.
*
* Единая точка правды: тип `CategoryId` и порядок отображения в каталоге
* выводятся из одного `as const`-объекта, чтобы не рассинхронизироваться.
* Этот файл — локальная копия подхода для нового UI; старый `../categories`
* (массив + union вручную) не трогаем — он обслуживает старый UI в `(old)/`.
*
* Человекочитаемые названия живут в словарях i18n: секция categories,
* ключ = CategoryId.
*/
export const CATEGORIES = {
convert: "convert",
alpha: "alpha",
color: "color",
geometry: "geometry",
filters: "filters",
text: "text",
analyze: "analyze",
generate: "generate",
} as const;
export type CategoryId = (typeof CATEGORIES)[keyof typeof CATEGORIES];
/** Порядок категорий в каталоге (как задано в `CATEGORIES`). */
export const CATEGORY_IDS = Object.keys(CATEGORIES) as CategoryId[];