Initial commit

This commit is contained in:
kevisual
2025-04-04 02:25:11 +08:00
commit cb0510c28e
20 changed files with 2211 additions and 0 deletions

12
src/app.ts Normal file
View File

@@ -0,0 +1,12 @@
import type { Page } from '@kevisual/store/page';
import type { QueryRouterServer } from '@kevisual/router';
import { basename } from './modules/basename';
export const page = useContextKey('page', () => {
return new window.Page({
basename,
}) as unknown as Page;
});
export const app = useContextKey('app', () => {
console.error('app not found');
return null as unknown as QueryRouterServer;
});

16
src/assets/index.css Normal file
View File

@@ -0,0 +1,16 @@
@import "tailwindcss";
@layer components {
.test-loading {
@apply w-20 h-20 bg-gray-300 rounded-full animate-spin;
}
}
#ai-bot-root {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: -100px;
z-index: 9999;
}

48
src/main.ts Normal file
View File

@@ -0,0 +1,48 @@
import { page, app } from './app.ts';
import { basename } from './modules/basename.ts';
export const render = ({ renderRoot }) => {
renderRoot.innerHTML = `
<h1>Hello, World!</h1>
`;
};
console.log('basename', basename, page, app);
if (page) {
page.addPage('/app-template', 'home');
page.subscribe('home', () => {
render({
renderRoot: document.getElementById('ai-root'),
});
});
page.addPage('', 'index');
page.subscribe('index', () => {
const root = document.getElementById('ai-root') as HTMLElement;
root.innerHTML = `
<h1>Hello, World!</h1>
`;
});
}
if (app) {
app
.route({
path: 'app-template',
key: 'render',
})
.define(async (ctx) => {
let { renderRoot } = ctx.query;
if (!renderRoot) {
ctx.throw(404, 'renderRoot is required');
}
if (typeof renderRoot === 'string') {
renderRoot = document.querySelector(renderRoot);
}
if (!renderRoot) {
ctx.throw(404, 'renderRoot not found');
}
render({
renderRoot,
});
})
.addTo(app);
}

2
src/modules/basename.ts Normal file
View File

@@ -0,0 +1,2 @@
// @ts-ignore
export const basename = DEV_SERVER ? '/' : BASE_NAME;

3
src/modules/message.ts Normal file
View File

@@ -0,0 +1,3 @@
import { message } from '@kevisual/system-ui/dist/message';
export { message };

3
src/modules/query.ts Normal file
View File

@@ -0,0 +1,3 @@
import { QueryClient } from '@kevisual/query';
export const query = new QueryClient();