feat: lazy load ninja-keys + HTML Invoker Commands API

- Lazy load ninja-keys only on CMD+K press (0 requests on initial load)
- Use esm.sh bundled module (3 requests vs ~81 previously)
- Add esm.sh to CSP whitelist
- Implement HTML Invoker Commands API for modals:
  - commandfor="modal-id" + command="show-modal" for opening
  - commandfor="modal-id" + command="close" for closing
  - Removes need for onclick handlers on modal buttons
- Refactor index.html into layout partials (head, body-scripts)
- Add comprehensive tests for both features
This commit is contained in:
juanatsap
2025-12-02 08:29:54 +00:00
parent c6411db9c8
commit 2d3d3de8cd
22 changed files with 1489 additions and 386 deletions
+3 -1
View File
@@ -1,9 +1,11 @@
{{define "info-button"}}
<!-- Info Button (Bottom Left) -->
<!-- Uses HTML Invoker Commands API: commandfor + command="show-modal" -->
<button id="info-button" class="info-button no-print has-tooltip"
aria-label="{{.UI.Widgets.Info.AriaLabel}}"
data-tooltip="{{.UI.Widgets.Info.Tooltip}}"
onclick="document.getElementById('info-modal').showModal()">
commandfor="info-modal"
command="show-modal">
<iconify-icon icon="mdi:information-outline"></iconify-icon>
</button>
{{end}}