feat(admin-ui): codemod @nstart/ui → @/ui (Stage 2.2)
This commit is contained in:
@@ -1,40 +1,59 @@
|
||||
/**
|
||||
* Barrel re-export для shadcn-style UI primitives.
|
||||
* Barrel re-export для UI primitives.
|
||||
*
|
||||
* <p>Это единая точка входа для UI компонентов в admin-ui. Цель — постепенно
|
||||
* переключить все импорты с {@code @nstart/ui} на {@code @/ui}, и затем
|
||||
* удалить @nstart/ui из package.json.
|
||||
* <p>Стратегия миграции (Phase 2 stack migration):
|
||||
* <ul>
|
||||
* <li>{@code @nstart/ui} остаётся подключённым — все его компоненты
|
||||
* pass-through через этот barrel, чтобы существующий код работал без
|
||||
* рефактора props (Checkbox.label/description, Modal.panelClassName,
|
||||
* FormActions.align, и т.п.).</li>
|
||||
* <li>shadcn-style primitives в {@code ./components/*} добавлены как
|
||||
* параллельный набор. Новый код использует их через alias'ы где они
|
||||
* чище nstart'а ({@code Button}, {@code Badge}, {@code Alert} с
|
||||
* Tailwind v4 tokens; {@code Cap}, {@code ScopeBadge}, {@code ScopeDot},
|
||||
* {@code ScopeStrip} — handoff design system primitives).</li>
|
||||
* <li>Phase 3: компоненты которые имеют bug'и или missing features в nstart
|
||||
* (Combobox vs MultiSelect, TanStack Table vs Table) — заменяются
|
||||
* per-file rewrite.</li>
|
||||
* <li>Phase 4: @nstart/ui удаляется из package.json когда все callsites
|
||||
* переписаны.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>Phase 2 миграции (handoff plan): новые компоненты — Radix primitives +
|
||||
* Tailwind v4 tokens. Phase 3 — каждый touched файл переносится с {@code
|
||||
* @nstart/ui} на {@code @/ui} имена. Phase 4 — pkg removed.
|
||||
*
|
||||
* <p>Все компоненты используют наши design tokens (--color-ink, --color-accent
|
||||
* etc.) через @theme inline в styles.css.
|
||||
* <p>Текущая семантика: import {X} from '@/ui' — Х берётся приоритетно из
|
||||
* наших shadcn primitives (overrides ниже), иначе passthrough из @nstart/ui.
|
||||
* Этот файл — single source of truth для UI imports.
|
||||
*/
|
||||
|
||||
// Buttons + actions
|
||||
// === Полная re-export из @nstart/ui — все компоненты, hooks, locale const ===
|
||||
// Дальше будут selective overrides где наши shadcn primitives лучше.
|
||||
export * from '@nstart/ui'
|
||||
|
||||
// === Overrides: наши shadcn primitives с Tailwind v4 tokens ===
|
||||
// Эти именованные re-export'ы перекрывают одноимённые из @nstart/ui выше
|
||||
// (TS resolves last declaration → наши берут верх). Mostly cosmetic — общий
|
||||
// API design сохранён, добавлены теневые props (loading, error-variant и т.д.).
|
||||
export { Button, buttonVariants, type ButtonProps } from './components/button'
|
||||
export { IconButton, type IconButtonProps } from './components/icon-button'
|
||||
|
||||
// Inputs
|
||||
export { Input, type InputProps } from './components/input'
|
||||
export { Label } from './components/label'
|
||||
export { SearchInput, type SearchInputProps } from './components/search-input'
|
||||
|
||||
// Form layout
|
||||
export { FormActions, type FormActionsProps } from './components/form-actions'
|
||||
|
||||
// Status / feedback
|
||||
export { Badge, type BadgeProps } from './components/badge'
|
||||
export { Alert, type AlertProps } from './components/alert'
|
||||
export { Skeleton } from './components/skeleton'
|
||||
export { LoadingBlock, type LoadingBlockProps } from './components/loading-block'
|
||||
export { EmptyState, type EmptyStateProps } from './components/empty-state'
|
||||
|
||||
// Surfaces
|
||||
// === Handoff design system primitives — новые компоненты без nstart-аналога ===
|
||||
export { Cap, type CapProps } from './components/cap'
|
||||
export {
|
||||
Card,
|
||||
ScopeDot,
|
||||
ScopeBadge,
|
||||
ScopeStrip,
|
||||
type DataScope as ScopeKind,
|
||||
} from './components/scope'
|
||||
|
||||
// === shadcn primitives для НОВОГО кода (Phase 3) ===
|
||||
// Эти именованные exports НЕ конфликтуют с nstart (имена не пересекаются).
|
||||
// Используются в редизайне catalog/editor/drawer per handoff README.
|
||||
export { IconButton as ShadcnIconButton, type IconButtonProps } from './components/icon-button'
|
||||
export { Input as ShadcnInput, type InputProps as ShadcnInputProps } from './components/input'
|
||||
export { Label as ShadcnLabel } from './components/label'
|
||||
export { SearchInput as ShadcnSearchInput, type SearchInputProps as ShadcnSearchInputProps } from './components/search-input'
|
||||
export {
|
||||
Card as ShadcnCard,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
CardDescription,
|
||||
@@ -42,9 +61,7 @@ export {
|
||||
CardFooter,
|
||||
} from './components/card'
|
||||
export { Separator } from './components/separator'
|
||||
export { PageHeader, type PageHeaderProps } from './components/page-header'
|
||||
|
||||
// Overlays
|
||||
export { Skeleton } from './components/skeleton'
|
||||
export {
|
||||
Dialog,
|
||||
DialogTrigger,
|
||||
@@ -82,9 +99,13 @@ export {
|
||||
TooltipTrigger,
|
||||
TooltipContent,
|
||||
} from './components/tooltip'
|
||||
|
||||
// Navigation
|
||||
export { Tabs, TabsList, TabsTrigger, TabsContent } from './components/tabs'
|
||||
// Tabs из shadcn — composition API.
|
||||
export {
|
||||
Tabs as ShadcnTabsRoot,
|
||||
TabsList as ShadcnTabsList,
|
||||
TabsTrigger as ShadcnTabsTrigger,
|
||||
TabsContent as ShadcnTabsContent,
|
||||
} from './components/tabs'
|
||||
export {
|
||||
DropdownMenu,
|
||||
DropdownMenuTrigger,
|
||||
@@ -101,25 +122,4 @@ export {
|
||||
DropdownMenuSubContent,
|
||||
DropdownMenuRadioGroup,
|
||||
} from './components/dropdown-menu'
|
||||
|
||||
// Form controls
|
||||
export { Checkbox } from './components/checkbox'
|
||||
export { Switch } from './components/switch'
|
||||
|
||||
// Domain-specific atoms (handoff design system)
|
||||
export { Cap, type CapProps } from './components/cap'
|
||||
export {
|
||||
ScopeDot,
|
||||
ScopeBadge,
|
||||
ScopeStrip,
|
||||
type DataScope,
|
||||
} from './components/scope'
|
||||
|
||||
// === @nstart/ui compatibility aliases ===
|
||||
// Чтобы упростить миграцию touched файлов: перевод import только-source,
|
||||
// not всего code. Каждый alias документирован, как соотносится с новым API.
|
||||
|
||||
export { Card as Panel } from './components/card'
|
||||
export { Dialog as Modal } from './components/dialog'
|
||||
export { Sheet as Drawer } from './components/sheet'
|
||||
export { Input as TextInput } from './components/input'
|
||||
export { Switch as ShadcnSwitch } from './components/switch'
|
||||
|
||||
Reference in New Issue
Block a user