Зробити evo-ui технічним пакетом для Evolution CMS manager UI: Livewire + DaisyUI + Evo themes + спільні компоненти для модулів. Перший реальний споживач - sArticles, але пакет не має бути автономним manager module і не має додавати власний пункт меню.
module/sArticlesModule.php- великий legacy dispatcher наget=...; він одночасно готує дані, зберігає форми, перемикає views і робить частину CRUD.views/index.blade.php- legacy shell модуля, ручне ajax-перемикання, підключенняadmin.css,admin.js, Select2, jQuery UI, Alertify, manager Bootstrap/date picker scripts; tabs і theme layer поступово виносимо вevo-ui.assets/js/admin.js- legacy центр поведінки: ajax navigation, dirty state, confirm delete, Select2 reinit, sortable reinit, publish/comment ajax actions; theme sync і platform scrollbar layer винесені вevo-ui.- Основні legacy залежності: jQuery, Select2, jQuery UI sortable, Alertify, manager datepicker, TinyMCE, ручний
documentDirty. - Найскладніша зона - article/content editor і builder blocks, бо там TinyMCE + drag/sort + dynamic block templates.
- Найбезпечніша зона для першої Livewire міграції - списки/table surfaces: articles, comments, authors, tags, topics, features, polls.
- Має корисний фундамент: Livewire 4 bridge для Evo manager, Blade namespace
x-evo::, layout, table/form components, theme sync, Windows-only custom scrollbar detection, Tabler icon wrapper. - Початково був зроблений як demo module з власними routes/tabs/settings; для
evo-uiце зайве і винесено. - Table component вже має URL state, pagination, filters, search, row actions, view modes.
- Form component вже має config/model source, tabs, actions, fields, resource parent picker, multilingual bridge.
- Для
sArticlesтреба доробити relationship filters/search hooks, бо articles працюють через translations, tags, topics, features і resource sections.
- Оформити Composer package
evolution-cms/evo-uiз типомlibrary. - Перенести корисний код з
dEvoUIу namespaceEvoUI. - Прибрати автономну реєстрацію manager module, demo routes і demo shell.
- Залишити сервіс-провайдер, Blade namespace
x-evo::, Livewire bridge, Livewire components, manager layout і assets. - Нормалізувати config key до
evo-ui. - Публікувати assets у
assets/modules/evo-ui. - Залишити теми
evolight,evolightness,evodark,evodarkness; не повертати старі/видалені теми.
- Table shell: toolbar, search, filters, segmented controls, pagination, action buttons.
- Module table primitive:
x-evo::table.modulefor module-owned business rows with evo-ui-owned toolbar, filters, table markup, cells, row actions and pagination. - Form shell: action bar, dirty state, tabs, field rows, checkbox/select/text/date/media primitives.
- Tabs shell: проста локальна реалізація без WebFX, зі стабільними стрілками і URL state.
- Icons: Tabler через blade-icons, без Font Awesome для нового UI.
- Theme sync: підхоплювати тему manager frame live, без дублювання перемикачів тем.
- Scrollbars: custom only for Windows; на macOS залишати native scroll.
- Описати table presets для articles, authors, tags, comments, polls, topics, features.
- Описати перший table preset для articles у
sArticles/config/articles/table.php. - Додати provider contract для module-owned data:
evo-uiволодіє Livewire/table shell, а модуль віддає rows, totals, filters і row actions через data provider. - Додати hooks для relationship filters: resource section, topics, tags, features, visibility.
- Додати case-insensitive search contract для різних SQL драйверів на першому provider-і
sArticles. - Додати row action contract: publish/hide, edit, delete для першої articles table.
- Додати support для double-click edit rows.
- Підключити
evo-uiуsArticles/demoчерез local path repository. - Публікувати або symlink-нути
evo-uiassets у demo. - Не ламати поточний legacy sArticles UI під час першого підключення.
- Переконатися, що package discovery бачить
EvoUI\EvoUIServiceProvider.
- Почати з articles table як першої Livewire surface.
- Livewire-компонент перенесено у
evo-ui:EvoUI\Livewire\ModuleTable. views/articlesTab.blade.phpстав тонкимx-evo::table.livewireentrypoint.- У
sArticlesзалишено тількиconfig/articles/table.phpіSeiger\sArticles\Tables\ArticlesTableDataяк бізнес/data provider. - Збережено legacy edit/delete URLs, щоб editor/builder поки не чіпати.
- Фільтри, пошук, видимість, publish toggle і пагінація тепер керуються
evo-uishell з даними з provider-а.
- Livewire-компонент перенесено у
- Потім перенести comments list, бо там потрібні ajax actions і compact action buttons.
- Потім authors/tags/topics/features/polls як прості CRUD таблиці.
- Останнім переносити article editor і builder, бо там найбільше legacy jQuery/TinyMCE/jQuery UI.
- Поступово прибирати
admin.js,admin.css, Select2, jQuery UI і inline scripts тільки після заміни відповідної surface.
- Після стабілізації локальної інтеграції зафіксувати мінімальний API
evo-ui. - Зарелізити
evolution-cms/evo-ui. - Перевести
sArticlesз path repository на version constraint. - Підготувати окремий план інтеграції
evo-uiу майбутні версії Evolution CMS core.
Починаємо з evo-ui як окремого technical dependency. Це швидше і чистіше, ніж писати компоненти прямо всередині sArticles, бо одразу формується стабільний UI foundation. При цьому sArticles лишається першим полігоном: усе, що виявиться специфічним тільки для публікацій, має залишатися у sArticles, а все універсальне йде в evo-ui.