feat(admin): separate platform CRUD from CMS, add entity selector macro
Some checks failed
CI / ruff (push) Successful in 11s
CI / docs (push) Has been cancelled
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled

- Move platforms menu from CMS to Platform Admin section with create/edit
- Add platform create page, API endpoint, and service method
- Remove CMS-specific content from platform list and detail pages
- Create shared entity_selector + entity_selected_badge Jinja macros
- Create entity-selector.js generalizing store-selector.js for any entity
- Add Tom Select merchant filter to stores page with localStorage persistence
- Migrate store-products page to use shared macros (remove 53 lines of duped CSS)
- Fix broken icons: puzzle→puzzle-piece, building-storefront→store, language→translate, server→cube

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 22:40:15 +01:00
parent fa758b7e31
commit 45260b6b82
22 changed files with 943 additions and 267 deletions

View File

@@ -44,7 +44,7 @@
<p class="text-2xl font-bold text-gray-900 dark:text-white" x-text="stats.total_stores || 0"></p>
</div>
<div class="w-10 h-10 bg-blue-100 dark:bg-blue-900/30 rounded-lg flex items-center justify-center">
<span x-html="$icon('building-storefront', 'w-5 h-5 text-blue-600 dark:text-blue-400')"></span>
<span x-html="$icon('store', 'w-5 h-5 text-blue-600 dark:text-blue-400')"></span>
</div>
</div>
</div>
@@ -147,7 +147,7 @@
<div x-show="!loading" x-cloak class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden">
<!-- Empty State -->
<div x-show="stores.length === 0" class="text-center py-12">
<span x-html="$icon('building-storefront', 'w-12 h-12 mx-auto text-gray-400')"></span>
<span x-html="$icon('store', 'w-12 h-12 mx-auto text-gray-400')"></span>
<h3 class="mt-4 text-lg font-medium text-gray-900 dark:text-white">No stores found</h3>
<p class="mt-2 text-gray-500 dark:text-gray-400">
<span x-show="stats.total_stores === 0">Click "Sync from Letzshop" to import stores.</span>