diff --git a/.svelte-kit/generated/client/app.js b/.svelte-kit/generated/client/app.js index 388e12c1..ae6c9a8e 100644 --- a/.svelte-kit/generated/client/app.js +++ b/.svelte-kit/generated/client/app.js @@ -5,15 +5,18 @@ export const nodes = [ () => import('./nodes/1'), () => import('./nodes/2'), () => import('./nodes/3'), - () => import('./nodes/4') + () => import('./nodes/4'), + () => import('./nodes/5'), + () => import('./nodes/6') ]; export const server_loads = [0]; export const dictionary = { - "/": [2], - "/login": [~4], - "/logout": [~3] + "/": [3], + "/login": [~6], + "/logout": [~4], + "/[site]": [~5,[2]] }; export const hooks = { diff --git a/.svelte-kit/generated/client/nodes/2.js b/.svelte-kit/generated/client/nodes/2.js index 1cb4f855..f46b371c 100644 --- a/.svelte-kit/generated/client/nodes/2.js +++ b/.svelte-kit/generated/client/nodes/2.js @@ -1 +1 @@ -export { default as component } from "../../../../src/routes/+page.svelte"; \ No newline at end of file +export { default as component } from "../../../../src/routes/[site]/+layout.svelte"; \ No newline at end of file diff --git a/.svelte-kit/generated/client/nodes/3.js b/.svelte-kit/generated/client/nodes/3.js index 2a513383..1cb4f855 100644 --- a/.svelte-kit/generated/client/nodes/3.js +++ b/.svelte-kit/generated/client/nodes/3.js @@ -1 +1 @@ -export { default as component } from "../../../../src/routes/logout/+page.svelte"; \ No newline at end of file +export { default as component } from "../../../../src/routes/+page.svelte"; \ No newline at end of file diff --git a/.svelte-kit/generated/client/nodes/4.js b/.svelte-kit/generated/client/nodes/4.js index f2b26cd1..2a513383 100644 --- a/.svelte-kit/generated/client/nodes/4.js +++ b/.svelte-kit/generated/client/nodes/4.js @@ -1 +1 @@ -export { default as component } from "../../../../src/routes/login/+page.svelte"; \ No newline at end of file +export { default as component } from "../../../../src/routes/logout/+page.svelte"; \ No newline at end of file diff --git a/.svelte-kit/generated/client/nodes/5.js b/.svelte-kit/generated/client/nodes/5.js new file mode 100644 index 00000000..0f681549 --- /dev/null +++ b/.svelte-kit/generated/client/nodes/5.js @@ -0,0 +1 @@ +export { default as component } from "../../../../src/routes/[site]/+page.svelte"; \ No newline at end of file diff --git a/.svelte-kit/generated/client/nodes/6.js b/.svelte-kit/generated/client/nodes/6.js new file mode 100644 index 00000000..f2b26cd1 --- /dev/null +++ b/.svelte-kit/generated/client/nodes/6.js @@ -0,0 +1 @@ +export { default as component } from "../../../../src/routes/login/+page.svelte"; \ No newline at end of file diff --git a/.svelte-kit/generated/root.svelte b/.svelte-kit/generated/root.svelte index 07951838..1c16fc86 100644 --- a/.svelte-kit/generated/root.svelte +++ b/.svelte-kit/generated/root.svelte @@ -5,7 +5,7 @@ import { browser } from '$app/environment'; // stores - let { stores, page, constructors, components = [], form, data_0 = null, data_1 = null } = $props(); + let { stores, page, constructors, components = [], form, data_0 = null, data_1 = null, data_2 = null } = $props(); if (!browser) { // svelte-ignore state_referenced_locally @@ -19,7 +19,7 @@ stores.page.set(page); } $effect(() => { - stores;page;constructors;components;form;data_0;data_1; + stores;page;constructors;components;form;data_0;data_1;data_2; stores.page.notify(); }); @@ -41,15 +41,27 @@ return unsubscribe; }); - const Pyramid_1=$derived(constructors[1]) + const Pyramid_2=$derived(constructors[2]) {#if constructors[1]} {@const Pyramid_0 = constructors[0]} - - + {#if constructors[2]} + {@const Pyramid_1 = constructors[1]} + + + + + + + {:else} + {@const Pyramid_1 = constructors[1]} + + + + {/if} {:else} diff --git a/.svelte-kit/generated/server/internal.js b/.svelte-kit/generated/server/internal.js index 031b38e3..36036e79 100644 --- a/.svelte-kit/generated/server/internal.js +++ b/.svelte-kit/generated/server/internal.js @@ -24,7 +24,7 @@ export const options = { app: ({ head, body, assets, nonce, env }) => "\n\n \n \n \n \n " + head + "\n \n \n
" + body + "
\n \n\n", error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" }, - version_hash: "k1vc61" + version_hash: "1jm6xni" }; export async function get_hooks() { diff --git a/.svelte-kit/non-ambient.d.ts b/.svelte-kit/non-ambient.d.ts index d56ff625..7f6a1cb6 100644 --- a/.svelte-kit/non-ambient.d.ts +++ b/.svelte-kit/non-ambient.d.ts @@ -27,18 +27,19 @@ export {}; declare module "$app/types" { export interface AppTypes { - RouteId(): "/" | "/api" | "/api/darkmode" | "/login" | "/logout"; + RouteId(): "/" | "/api" | "/api/darkmode" | "/login" | "/logout" | "/[site]"; RouteParams(): { - + "/[site]": { site: string } }; LayoutParams(): { - "/": Record; + "/": { site?: string }; "/api": Record; "/api/darkmode": Record; "/login": Record; - "/logout": Record + "/logout": Record; + "/[site]": { site: string } }; - Pathname(): "/" | "/api/darkmode" | "/login" | "/logout"; + Pathname(): "/" | "/api/darkmode" | "/login" | "/logout" | `/${string}` & {}; ResolvedPathname(): `${"" | `/${string}`}${ReturnType}`; Asset(): string & {}; } diff --git a/.svelte-kit/types/route_meta_data.json b/.svelte-kit/types/route_meta_data.json index 71a3acc7..43dfcff7 100644 --- a/.svelte-kit/types/route_meta_data.json +++ b/.svelte-kit/types/route_meta_data.json @@ -13,5 +13,10 @@ "/logout": [ "src/routes/logout/+page.server.ts", "src/routes/+layout.server.ts" + ], + "/[site]": [ + "src/routes/[site]/+page.server.ts", + "src/routes/+layout.server.ts", + "src/routes/+layout.server.ts" ] } \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/$types.d.ts b/.svelte-kit/types/src/routes/$types.d.ts index 51b87c19..88171839 100644 --- a/.svelte-kit/types/src/routes/$types.d.ts +++ b/.svelte-kit/types/src/routes/$types.d.ts @@ -12,8 +12,8 @@ type EnsureDefined = T extends null | undefined ? {} : T; type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; export type Snapshot = Kit.Snapshot; type PageParentData = EnsureDefined; -type LayoutRouteId = RouteId | "/" | "/logout" | "/login" | null -type LayoutParams = RouteParams & { } +type LayoutRouteId = RouteId | "/" | "/logout" | "/[site]" | "/login" | null +type LayoutParams = RouteParams & { site?: string } type LayoutServerParentData = EnsureDefined<{}>; type LayoutParentData = EnsureDefined<{}>; diff --git a/.svelte-kit/types/src/routes/[site]/$types.d.ts b/.svelte-kit/types/src/routes/[site]/$types.d.ts new file mode 100644 index 00000000..b2cc3e6d --- /dev/null +++ b/.svelte-kit/types/src/routes/[site]/$types.d.ts @@ -0,0 +1,32 @@ +import type * as Kit from '@sveltejs/kit'; + +type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; +// @ts-ignore +type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; +type RouteParams = { site: string }; +type RouteId = '/[site]'; +type MaybeWithVoid = {} extends T ? T | void : T; +export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; +type OutputDataShape = MaybeWithVoid> & Partial> & Record> +type EnsureDefined = T extends null | undefined ? {} : T; +type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; +export type Snapshot = Kit.Snapshot; +type PageServerParentData = Omit, keyof LayoutServerData> & EnsureDefined; +type PageParentData = Omit, keyof LayoutData> & EnsureDefined; +type LayoutRouteId = RouteId | "/[site]" +type LayoutParams = RouteParams & { site?: string } +type LayoutParentData = EnsureDefined; + +export type EntryGenerator = () => Promise> | Array; +export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; +export type PageServerLoadEvent = Parameters[0]; +export type ActionData = unknown; +export type PageServerData = Expand>>>>>; +export type PageData = Expand & EnsureDefined>; +export type Action | void = Record | void> = Kit.Action +export type Actions | void = Record | void> = Kit.Actions +export type PageProps = { params: RouteParams; data: PageData; form: ActionData } +export type LayoutServerData = null; +export type LayoutData = Expand; +export type LayoutProps = { params: LayoutParams; data: LayoutData; children: import("svelte").Snippet } +export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/src/lib/sites.ts b/src/lib/sites.ts new file mode 100644 index 00000000..abbb7d87 --- /dev/null +++ b/src/lib/sites.ts @@ -0,0 +1,26 @@ +/** + * Config for each linked site: route slug → URL and optional per-site options. + * Add site-specific options here (e.g. title, sandbox, allow) as needed. + */ +export const sites = { + prism: { + url: 'https://prism.ccllc.pro', + title: 'Prism' + }, + tasgrid: { + url: 'https://tasgrid.ccllc.pro', + title: 'TasGrid' + }, + stackq: { + url: 'https://stackq.ccllc.pro', + title: 'Stackq' + }, + hrm: { + url: 'https://hrm.ccllc.pro', + title: 'HRM' + } +} as const; + +export type SiteSlug = keyof typeof sites; + +export const siteSlugs = Object.keys(sites) as SiteSlug[]; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 1d824773..beaf145a 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,6 +1,7 @@ @@ -17,18 +18,12 @@

Base

- - - - - - - - - - - - + {#each siteSlugs as slug} + {@const site = sites[slug]} + + + + {/each}
{/if} diff --git a/src/routes/HomeWithDialog.svelte b/src/routes/HomeWithDialog.svelte index e33f7e4a..d3dea964 100644 --- a/src/routes/HomeWithDialog.svelte +++ b/src/routes/HomeWithDialog.svelte @@ -1,5 +1,6 @@ + +
+ {@render children?.()} +
diff --git a/src/routes/[site]/+page.server.ts b/src/routes/[site]/+page.server.ts new file mode 100644 index 00000000..12f93d7b --- /dev/null +++ b/src/routes/[site]/+page.server.ts @@ -0,0 +1,17 @@ +import { sites, type SiteSlug } from '$lib/sites'; +import { error } from '@sveltejs/kit'; + +export function load({ params }) { + const slug = params.site?.toLowerCase() as SiteSlug | undefined; + const site = slug && slug in sites ? sites[slug as SiteSlug] : null; + + if (!site) { + throw error(404, `Unknown site: ${params.site}`); + } + + return { + slug: slug as SiteSlug, + url: site.url, + title: site.title + }; +} diff --git a/src/routes/[site]/+page.svelte b/src/routes/[site]/+page.svelte new file mode 100644 index 00000000..bf6e0856 --- /dev/null +++ b/src/routes/[site]/+page.svelte @@ -0,0 +1,32 @@ + + + + {data.title} — Base + + +
+