952373fce5
Триггер фазы 2 выполнен — первый коммит в app/resources/js/. Активирует 5 из 6 инструментов фазы 2 (CLAUDE.md §3.3) — без Histoire (отдельно). Tailwind удалён (правило CLAUDE.md §5 п.2). Стек: - vue@3.5, vuetify@3.12, @vitejs/plugin-vue@6 (для Vite 8 совместимости — @vitejs/plugin-vue@5 поддерживает только Vite 5/6), vite-plugin-vuetify@2 (auto-import), sass-embedded - eslint@10 (flat-config), eslint-plugin-vue@10, @vue/eslint-config-typescript@14, eslint-config-prettier, prettier@3.8 - typescript@6, vue-tsc@3.2 - vitest@4.1, @vue/test-utils, jsdom, @vitest/coverage-v8 Конфиги: - app/vite.config.js — vue + vuetify auto-import - app/vitest.config.ts — jsdom + setup file для ResizeObserver/ IntersectionObserver/matchMedia/CSS.supports stubs (без них Vuetify падает в JSDOM) - app/eslint.config.js — flat-config - app/.prettierrc.json, app/tsconfig.json Frontend-структура: - resources/js/app.ts — точка входа - resources/js/plugins/vuetify.ts — палитра Forest (Teal/ivory/теало-нуар из BRANDBOOK_v2 §3) - resources/js/components/AppShell.vue — первый компонент: v-app + v-app-bar + v-card - resources/css/app.css — Inter (UI, opsz axis), JetBrains Mono (.numeric, tnum) - resources/views/welcome.blade.php — упрощён под Vue mount Smoke-тесты Vitest 3/3 за 2.8 сек: - монтируется без ошибок - содержит «Лидерра.» - рендерит chip с фазой 2 Build: 158 модулей за 386 ms (184 KB JS / 295 KB CSS gzipped). npm-scripts: lint:vue, format, format:check, type-check, test:vue. lefthook job #8 (ESLint на staged .ts/.vue) добавлен в pre-commit. Полный type-check (vue-tsc) и Vitest — отдельно вручную (медленно для pre-commit: ~3 сек на каждый). CLAUDE.md v1.16 → v1.17 (фаза 1 → фаза 2 в §6). Реестр Открытые_вопросы v1.25 → v1.26. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
// @ts-expect-error vuetify/styles — CSS-импорт без d.ts
|
|
import 'vuetify/styles';
|
|
import { createVuetify } from 'vuetify';
|
|
import type { ThemeDefinition } from 'vuetify';
|
|
|
|
/**
|
|
* Палитра Forest (BRANDBOOK_v2 §3, v8 handoff Платона).
|
|
*
|
|
* Источник истины — `liderra_v8_handoff/docs/BRANDBOOK_v2.md`. 14 OKLCH-статусов
|
|
* воронки маппятся на 14 slug'ов из `db/schema.sql:2076` (lead_statuses) —
|
|
* НЕ на 14 «обобщённых» из BRANDBOOK §3.6 (расхождение зафиксировано в
|
|
* `Открытые_вопросы` v1.13).
|
|
*/
|
|
const liderraForest: ThemeDefinition = {
|
|
dark: false,
|
|
colors: {
|
|
background: '#F6F3EC', // warm ivory — page bg
|
|
surface: '#FFFFFF',
|
|
primary: '#0F6E56', // Teal — неоспариваемый primary
|
|
'on-primary': '#FFFFFF',
|
|
secondary: '#012019', // теало-нуар — sidebar
|
|
'on-secondary': '#F6F3EC',
|
|
success: '#2E8B57',
|
|
warning: '#D9A441',
|
|
error: '#B83A3A',
|
|
info: '#3F7C95',
|
|
},
|
|
};
|
|
|
|
export const vuetify = createVuetify({
|
|
theme: {
|
|
defaultTheme: 'liderraForest',
|
|
themes: { liderraForest },
|
|
},
|
|
defaults: {
|
|
VBtn: { variant: 'flat' },
|
|
VCard: { rounded: 'lg' },
|
|
},
|
|
});
|