Add Bookmarks section to dashboard with Forgejo, Build Site, Newsletter links

This commit is contained in:
TBQ Guy 2025-12-27 23:24:22 +05:30
parent dba514e781
commit 6aa67e3fc0
13 changed files with 59 additions and 17 deletions

BIN
.DS_Store vendored

Binary file not shown.

View file

@ -56,6 +56,7 @@ declare module '$env/static/private' {
export const PATH: string;
export const npm_package_json: string;
export const _: string;
export const LaunchInstanceID: string;
export const npm_config_userconfig: string;
export const npm_config_init_module: string;
export const __CFBundleIdentifier: string;
@ -95,6 +96,7 @@ declare module '$env/static/private' {
export const CLAUDECODE: string;
export const VSCODE_L10N_BUNDLE_LOCATION: string;
export const VSCODE_CWD: string;
export const SECURITYSESSIONID: string;
export const npm_node_execpath: string;
export const npm_config_prefix: string;
export const NODE_ENV: string;
@ -110,7 +112,7 @@ declare module '$env/static/private' {
* ```
*/
declare module '$env/static/public' {
export const PUBLIC_API_URL: string;
}
/**
@ -157,6 +159,7 @@ declare module '$env/dynamic/private' {
PATH: string;
npm_package_json: string;
_: string;
LaunchInstanceID: string;
npm_config_userconfig: string;
npm_config_init_module: string;
__CFBundleIdentifier: string;
@ -196,6 +199,7 @@ declare module '$env/dynamic/private' {
CLAUDECODE: string;
VSCODE_L10N_BUNDLE_LOCATION: string;
VSCODE_CWD: string;
SECURITYSESSIONID: string;
npm_node_execpath: string;
npm_config_prefix: string;
NODE_ENV: string;
@ -216,6 +220,7 @@ declare module '$env/dynamic/private' {
*/
declare module '$env/dynamic/public' {
export const env: {
PUBLIC_API_URL: string;
[key: `PUBLIC_${string}`]: string | undefined;
}
}

View file

@ -8,18 +8,26 @@ export const nodes = [
() => import('./nodes/4'),
() => import('./nodes/5'),
() => import('./nodes/6'),
() => import('./nodes/7')
() => import('./nodes/7'),
() => import('./nodes/8'),
() => import('./nodes/9'),
() => import('./nodes/10'),
() => import('./nodes/11')
];
export const server_loads = [];
export const dictionary = {
"/": [2],
"/cost-tracker": [3],
"/data-audit": [4],
"/drift-monitor": [5],
"/inference-estimator": [6],
"/privacy-scanner": [7]
"/auth/callback/google": [3],
"/cost-tracker": [4],
"/data-audit": [5],
"/drift-monitor": [6],
"/eda-gapminder": [7],
"/house-predictor": [8],
"/inference-estimator": [9],
"/login": [10],
"/privacy-scanner": [11]
};
export const hooks = {

View file

@ -1 +1 @@
export { default as component } from "../../../../src/routes/cost-tracker/+page.svelte";
export { default as component } from "../../../../src/routes/auth/callback/google/+page.svelte";

View file

@ -1 +1 @@
export { default as component } from "../../../../src/routes/data-audit/+page.svelte";
export { default as component } from "../../../../src/routes/cost-tracker/+page.svelte";

View file

@ -1 +1 @@
export { default as component } from "../../../../src/routes/drift-monitor/+page.svelte";
export { default as component } from "../../../../src/routes/data-audit/+page.svelte";

View file

@ -1 +1 @@
export { default as component } from "../../../../src/routes/inference-estimator/+page.svelte";
export { default as component } from "../../../../src/routes/drift-monitor/+page.svelte";

View file

@ -1 +1 @@
export { default as component } from "../../../../src/routes/privacy-scanner/+page.svelte";
export { default as component } from "../../../../src/routes/eda-gapminder/+page.svelte";

View file

@ -24,7 +24,7 @@ export const options = {
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n\t\t<title>AI Tools Suite</title>\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
},
version_hash: "fbb2o"
version_hash: "whuzp1"
};
export async function get_hooks() {

View file

@ -27,29 +27,35 @@ export {};
declare module "$app/types" {
export interface AppTypes {
RouteId(): "/" | "/bias-checks" | "/content-performance" | "/cost-tracker" | "/data-audit" | "/data-history" | "/drift-monitor" | "/emergency-control" | "/inference-estimator" | "/label-quality" | "/model-comparator" | "/privacy-scanner" | "/profitability" | "/reports" | "/security-tester";
RouteId(): "/" | "/auth" | "/auth/callback" | "/auth/callback/google" | "/bias-checks" | "/content-performance" | "/cost-tracker" | "/data-audit" | "/data-history" | "/drift-monitor" | "/eda-gapminder" | "/emergency-control" | "/house-predictor" | "/inference-estimator" | "/label-quality" | "/login" | "/model-comparator" | "/privacy-scanner" | "/profitability" | "/reports" | "/security-tester";
RouteParams(): {
};
LayoutParams(): {
"/": Record<string, never>;
"/auth": Record<string, never>;
"/auth/callback": Record<string, never>;
"/auth/callback/google": Record<string, never>;
"/bias-checks": Record<string, never>;
"/content-performance": Record<string, never>;
"/cost-tracker": Record<string, never>;
"/data-audit": Record<string, never>;
"/data-history": Record<string, never>;
"/drift-monitor": Record<string, never>;
"/eda-gapminder": Record<string, never>;
"/emergency-control": Record<string, never>;
"/house-predictor": Record<string, never>;
"/inference-estimator": Record<string, never>;
"/label-quality": Record<string, never>;
"/login": Record<string, never>;
"/model-comparator": Record<string, never>;
"/privacy-scanner": Record<string, never>;
"/profitability": Record<string, never>;
"/reports": Record<string, never>;
"/security-tester": Record<string, never>
};
Pathname(): "/" | "/bias-checks" | "/bias-checks/" | "/content-performance" | "/content-performance/" | "/cost-tracker" | "/cost-tracker/" | "/data-audit" | "/data-audit/" | "/data-history" | "/data-history/" | "/drift-monitor" | "/drift-monitor/" | "/emergency-control" | "/emergency-control/" | "/inference-estimator" | "/inference-estimator/" | "/label-quality" | "/label-quality/" | "/model-comparator" | "/model-comparator/" | "/privacy-scanner" | "/privacy-scanner/" | "/profitability" | "/profitability/" | "/reports" | "/reports/" | "/security-tester" | "/security-tester/";
Pathname(): "/" | "/auth" | "/auth/" | "/auth/callback" | "/auth/callback/" | "/auth/callback/google" | "/auth/callback/google/" | "/bias-checks" | "/bias-checks/" | "/content-performance" | "/content-performance/" | "/cost-tracker" | "/cost-tracker/" | "/data-audit" | "/data-audit/" | "/data-history" | "/data-history/" | "/drift-monitor" | "/drift-monitor/" | "/eda-gapminder" | "/eda-gapminder/" | "/emergency-control" | "/emergency-control/" | "/house-predictor" | "/house-predictor/" | "/inference-estimator" | "/inference-estimator/" | "/label-quality" | "/label-quality/" | "/login" | "/login/" | "/model-comparator" | "/model-comparator/" | "/privacy-scanner" | "/privacy-scanner/" | "/profitability" | "/profitability/" | "/reports" | "/reports/" | "/security-tester" | "/security-tester/";
ResolvedPathname(): `${"" | `/${string}`}${ReturnType<AppTypes['Pathname']>}`;
Asset(): string & {};
Asset(): "/logo.png" | string & {};
}
}

View file

@ -1,8 +1,12 @@
{
"/": [],
"/auth/callback/google": [],
"/cost-tracker": [],
"/data-audit": [],
"/drift-monitor": [],
"/eda-gapminder": [],
"/house-predictor": [],
"/inference-estimator": [],
"/login": [],
"/privacy-scanner": []
}

View file

@ -12,7 +12,7 @@ type EnsureDefined<T> = T extends null | undefined ? {} : T;
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
export type Snapshot<T = any> = Kit.Snapshot<T>;
type PageParentData = EnsureDefined<LayoutData>;
type LayoutRouteId = RouteId | "/" | "/cost-tracker" | "/data-audit" | "/drift-monitor" | "/inference-estimator" | "/privacy-scanner" | null
type LayoutRouteId = RouteId | "/" | "/auth/callback/google" | "/cost-tracker" | "/data-audit" | "/drift-monitor" | "/eda-gapminder" | "/house-predictor" | "/inference-estimator" | "/login" | "/privacy-scanner" | null
type LayoutParams = RouteParams & { }
type LayoutParentData = EnsureDefined<{}>;

View file

@ -48,6 +48,25 @@
</p>
</header>
<!-- Bookmarks -->
<div class="card p-4 mb-8">
<h2 class="text-sm font-medium text-surface-700 mb-3">Bookmarks</h2>
<div class="flex flex-wrap gap-4">
<a href="https://forgejo.valuecurve.co" target="_blank" rel="noopener"
class="text-sm text-primary-600 hover:text-primary-700 font-medium">
Code Repository | Forgejo →
</a>
<a href="https://build.valuecurve.co" target="_blank" rel="noopener"
class="text-sm text-primary-600 hover:text-primary-700 font-medium">
Build Site →
</a>
<a href="https://www.valuecurve.ai" target="_blank" rel="noopener"
class="text-sm text-primary-600 hover:text-primary-700 font-medium">
Newsletter →
</a>
</div>
</div>
<!-- Quick Stats -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-8">
<div class="card p-4">