# Vue/TS: что выносить в `libs/{vue|ts|js}`

Цель: переиспользовать код между приложениями без протечки доменной логики и без “god-lib”.

## Общие правила
- Вынос оправдан, если код нужен >= 2 приложениям.
- Публичный API минимален и стабилен; есть README (как использовать + примеры).
- `libs/ts/*` предпочтительнее `libs/js/*`; `libs/js/*` только для legacy/совместимости.

## `libs/vue/*` (Vue-специфичное)
Можно/нужно:
- переиспользуемые UI-компоненты (без продуктовых текстов/доменной логики);
- composables (`useX`) общего назначения (debounce, resize observer, clipboard, etc);
- обёртки/адаптеры над `vue-router`, `vue-i18n`, `vue3-cookies`;
- общие Pinia plugins, базовые store helpers.

Запрещено:
- “страницы” и фичи конкретного приложения;
- бизнес-логика продукта.

## `libs/ts/*` (framework-agnostic)
Можно/нужно:
- общие типы и helpers (без доменной семантики конкретного приложения);
- общий HTTP слой: обёртка над `axios` (создание клиента, интерсепторы, нормализация ошибок);
- helpers для URL/query params, даты/числа/форматы, безопасные parsers/casters;
- runtime-валидация/парсинг входных данных (если используется).

## `libs/js/*`
Только:
- небольшой слой совместимости или legacy код, который нельзя перевести на TS быстро и безопасно.
