33 lines
1.1 KiB
HTML
33 lines
1.1 KiB
HTML
{{/*
|
|
Projects surface — v0.37.16: Card grid + detail with inline chat.
|
|
*/}}
|
|
|
|
{{define "surface-projects"}}
|
|
<div id="projects-mount" style="height:100%;overflow:hidden;"></div>
|
|
{{end}}
|
|
|
|
{{define "css-projects"}}
|
|
<link rel="stylesheet" href="{{.BasePath}}/css/sw-projects-surface.css?v={{.Version}}">
|
|
{{end}}
|
|
|
|
{{define "scripts-projects"}}
|
|
<script nonce="{{.CSPNonce}}">
|
|
window.__PROJECT_ID__ = '{{.Data.ProjectID}}';
|
|
</script>
|
|
|
|
<script type="module" nonce="{{.CSPNonce}}">
|
|
const { h, render } = await import('{{.BasePath}}/js/sw/vendor/preact.module.js');
|
|
const hooksModule = await import('{{.BasePath}}/js/sw/vendor/hooks.module.js');
|
|
const { default: htm } = await import('{{.BasePath}}/js/sw/vendor/htm.module.js');
|
|
const html = htm.bind(h);
|
|
window.preact = window.preact || { h, render };
|
|
window.hooks = window.hooks || hooksModule;
|
|
window.html = window.html || html;
|
|
|
|
const { boot } = await import('{{.BasePath}}/js/sw/sdk/index.js?v={{.Version}}');
|
|
await boot();
|
|
|
|
await import('{{.BasePath}}/js/sw/surfaces/projects/index.js?v={{.Version}}');
|
|
</script>
|
|
{{end}}
|