feat: Refactor icon components to support filled and outlined states

- Updated Add.vue to handle filled and outlined states, merging AddFilled.vue functionality.
- Refactored Bell.vue and BellFilled.vue into a single component with filled state support.
- Created Credit.vue for credit card icon with filled and outlined states.
- Refactored Home.vue and HomeFilled.vue into a single component with filled state support.
- Refactored Layout.vue and LayoutFilled.vue into a single component with filled state support.
- Refactored Upload.vue and UploadFilled.vue into a single component with filled state support.
- Refactored Video.vue and VideoFilled.vue into a single component with filled state support.
- Enhanced index.tsx to include nonce for security in SSR.
- Updated main.ts to handle application data from SSR.
- Improved auth layout to include meta description for SEO.
- Updated routes to include meta information for head management.
- Simplified auth store methods for better readability and error handling.
- Updated UnoCSS configuration to include class prefix for better utility management.
This commit is contained in:
2026-01-05 18:27:35 +07:00
parent 61509b794b
commit a6f5ba8c90
23 changed files with 190 additions and 100 deletions

View File

@@ -30,6 +30,7 @@ app.get("/.well-known/*", (c) => {
return c.json({ ok: true });
});
app.get("*", async (c) => {
const nonce = crypto.randomUUID();
const url = new URL(c.req.url);
const { app, router, head, pinia, bodyClass } = createApp();
app.provide("honoContext", c);
@@ -59,8 +60,8 @@ app.get("*", async (c) => {
await Promise.all(styleTags.filter(tag => usedStyles.has(tag.name.replace(/-(variables|style)$/, ""))).map(tag => stream.write(`<style type="text/css" data-primevue-style-id="${tag.name}">${tag.value}</style>`)));
await stream.write(`</head><body class='${bodyClass}'>`);
await stream.pipe(appStream);
await stream.write(`<script>window.__SSR_STATE__ = JSON.parse(${htmlEscape(JSON.stringify(JSON.stringify(ctx)))});</script>`);
await stream.write(`<script>window.__PINIA_STATE__ = JSON.parse(${htmlEscape(JSON.stringify(JSON.stringify(pinia.state.value)))});</script>`);
Object.assign(ctx, { $p: pinia.state.value });
await stream.write(`<script type="application/json" data-ssr="true" id="__APP_DATA__" nonce="${nonce}">${htmlEscape((JSON.stringify(ctx)))}</script>`);
await stream.write("</body></html>");
});
})