decisions_log: - question: > Which build tool bundles the Vue Components and produces the `public/build` output (e.g. Vite, Webpack, esbuild)? decision: Vite rationale: > Chosen as the build tool despite being new to the author, as a deliberate opportunity to learn it. - question: > How are Vue components mounted into PHP-rendered templates, and how is data passed from PHP to a mounted component? decision: > Components are referenced directly in server-rendered markup as a custom HTML element tag matching the component name (e.g. ``); data is passed in as HTML attributes, which Vue exposes to the component's script block as props. rationale: > Matches Vue's own documented Single-File Component usage pattern, keeping the PHP-side markup declarative rather than needing a separate bootstrap script to wire up mount points and data. - question: > Is there a single global Vue application instance mounting multiple components per page, or does each interactive widget get its own independent Vue instance? decision: Each interactive widget gets its own independent Vue instance. rationale: > Keeps each widget (Theme/Plugin Editor, Focal Point Selector, Faceted Search filter panel, etc.) self-contained rather than coordinated through one shared page-level app instance. - question: > Will Vue Components be authored as Single-File Components (`.vue` files needing a build step) or as plain JS component definitions, and where do their source files live? decision: > Single-File Components (`.vue` files), living under `assets/js/components` within each theme. rationale: > Keeps component source files colocated with the theme that uses them, following Vue's standard SFC authoring approach.