diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4452e03 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.definitionLinkOpensInPeek": false +} diff --git a/frontend/.prettierignore b/frontend/.prettierignore new file mode 100644 index 0000000..7d74fe2 --- /dev/null +++ b/frontend/.prettierignore @@ -0,0 +1,9 @@ +# Package Managers +package-lock.json +pnpm-lock.yaml +yarn.lock +bun.lock +bun.lockb + +# Miscellaneous +/static/ diff --git a/frontend/.prettierrc b/frontend/.prettierrc index 5ad9d2e..ef82cc3 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,15 +1,15 @@ { - "useTabs": true, - "singleQuote": false, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ] + "useTabs": true, + "singleQuote": false, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] } diff --git a/frontend/.vscode/extensions.json b/frontend/.vscode/extensions.json index 5449017..11efe25 100644 --- a/frontend/.vscode/extensions.json +++ b/frontend/.vscode/extensions.json @@ -1,6 +1,3 @@ { - "recommendations": [ - "svelte.svelte-vscode", - "bradlc.vscode-tailwindcss" - ] + "recommendations": ["svelte.svelte-vscode", "bradlc.vscode-tailwindcss", "esbenp.prettier-vscode"] } diff --git a/frontend/bun.lock b/frontend/bun.lock index 37ee54a..e1322e8 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -25,6 +25,9 @@ "clsx": "^2.1.1", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-svelte": "^8.6.0", + "prettier": "^3.8.3", + "prettier-plugin-svelte": "^4.1.0", + "prettier-plugin-tailwindcss": "^0.8.0", "runed": "^0.37.1", "shadcn-svelte": "^1.2.7", "svelte": "^5.54.0", @@ -423,6 +426,12 @@ "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + "prettier": ["prettier@3.9.6", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g=="], + + "prettier-plugin-svelte": ["prettier-plugin-svelte@4.1.1", "", { "peerDependencies": { "prettier": "^3.0.0", "svelte": "^5.0.0" } }, "sha512-wXvbXMjSvb4C9ENWTHXyd+ihakKCsJ6rJhLP6/8HFNj4GkZr48jqL9PoKsl2sk7SyCZRTnJ7O2TTowUpOxP/KA=="], + + "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.8.1", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-iaFMYqDsE4ffdDkn5qup0j5f2aCEBFZrdrZnvu9QKTlWx/iGPeQ4HHu7b7fCPMxeo9nwQBiOAh2nSypdFYWJkw=="], + "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="], "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], diff --git a/frontend/package.json b/frontend/package.json index fd052ff..892700e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,7 +10,9 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "stripe-dev": "stripe listen --forward-to localhost:5173/api/webhook/stripe" + "stripe-dev": "stripe listen --forward-to localhost:5173/api/webhook/stripe", + "lint": "prettier --check .", + "format": "prettier --write ." }, "devDependencies": { "@fontsource-variable/inter": "^5.2.8", @@ -24,6 +26,9 @@ "clsx": "^2.1.1", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-svelte": "^8.6.0", + "prettier": "^3.8.3", + "prettier-plugin-svelte": "^4.1.0", + "prettier-plugin-tailwindcss": "^0.8.0", "runed": "^0.37.1", "shadcn-svelte": "^1.2.7", "svelte": "^5.54.0", diff --git a/frontend/prettier.config.js b/frontend/prettier.config.js new file mode 100644 index 0000000..5dc395d --- /dev/null +++ b/frontend/prettier.config.js @@ -0,0 +1,13 @@ +/** @type {import("prettier").Config} */ +const config = { + useTabs: true, + tabWidth: 4, + singleQuote: true, + trailingComma: "none", + printWidth: 100, + plugins: ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + overrides: [{ files: "*.svelte", options: { parser: "svelte" } }], + tailwindStylesheet: "./src/routes/layout.css" +}; + +export default config; diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts index 1f16ac4..8eb8b69 100644 --- a/frontend/src/app.d.ts +++ b/frontend/src/app.d.ts @@ -2,7 +2,7 @@ import type { UserModel } from "@/utils"; import type PocketBase from "pocketbase"; type AuthModel = { - [key: string]: any; + [key: string]: any; } | null; // See https://svelte.dev/docs/kit/types#app.d.ts @@ -11,8 +11,8 @@ declare global { namespace App { // interface Error {} interface Locals { - pb: PocketBase, - user?: UserModel | undefined + pb: PocketBase; + user?: UserModel | undefined; } // interface PageData {} // interface PageState {} diff --git a/frontend/src/app.html b/frontend/src/app.html index 0e9cc73..534acd7 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -3,9 +3,12 @@ - - - + + + %sveltekit.head% diff --git a/frontend/src/cal.css b/frontend/src/cal.css index 384df77..e3b2150 100644 --- a/frontend/src/cal.css +++ b/frontend/src/cal.css @@ -4,142 +4,142 @@ @custom-variant dark (&:is(.dark *)); :root { - --background: oklch(18.22% 0.00002 271.152); - --foreground: oklch(0.24 0 0);; - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --radius: 0.625rem; - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); + --background: oklch(18.22% 0.00002 271.152); + --foreground: oklch(0.24 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); } .dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.145 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.145 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.985 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.396 0.141 25.723); - --destructive-foreground: oklch(0.637 0.237 25.331); - --border: oklch(0.269 0 0); - --input: oklch(0.269 0 0); - --ring: oklch(0.439 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(0.269 0 0); - --sidebar-ring: oklch(0.439 0 0); + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); } @theme inline { - --font-sans: "Geist", "Geist Fallback"; - --font-mono: "Geist Mono", "Geist Mono Fallback"; - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); + --font-sans: "Geist", "Geist Fallback"; + --font-mono: "Geist Mono", "Geist Mono Fallback"; + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); } @layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } } @layer utilities { - ::-webkit-scrollbar { - width: 8px; - height: 8px; - } + ::-webkit-scrollbar { + width: 8px; + height: 8px; + } - ::-webkit-scrollbar-track { - background: #0a0a0a; - } + ::-webkit-scrollbar-track { + background: #0a0a0a; + } - ::-webkit-scrollbar-thumb { - background: #333; - border-radius: 4px; - } + ::-webkit-scrollbar-thumb { + background: #333; + border-radius: 4px; + } - ::-webkit-scrollbar-thumb:hover { - background: #444; - } + ::-webkit-scrollbar-thumb:hover { + background: #444; + } } diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index db50bd4..ff4ba70 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -4,30 +4,31 @@ import type { UserModel } from "@/utils"; config(); -export async function handle ({ event, resolve }) { - event.locals.pb = new PocketBase(process.env["PB_URL"]); - // event.locals.pb.authStore.save(process.env.POCKETBASE_TOKEN!, null); - event.locals.pb.authStore.clear(); - - const authCookie = event.cookies.get("pb_auth"); - - if (authCookie) { - try { - event.locals.pb.authStore.loadFromCookie(authCookie); - - event.locals.pb.authStore.isValid && await event.locals.pb.collection('users').authRefresh(); - - if (event.locals.pb.authStore.isValid) { - event.locals.user = structuredClone(event.locals.pb.authStore.record) as UserModel; - } else { - event.locals.user = undefined; - } - } catch (_) { - event.locals.pb.authStore.clear(); - } - } - - const response = await resolve(event); - - return response; -} \ No newline at end of file +export async function handle({ event, resolve }) { + event.locals.pb = new PocketBase(process.env["PB_URL"]); + // event.locals.pb.authStore.save(process.env.POCKETBASE_TOKEN!, null); + event.locals.pb.authStore.clear(); + + const authCookie = event.cookies.get("pb_auth"); + + if (authCookie) { + try { + event.locals.pb.authStore.loadFromCookie(authCookie); + + event.locals.pb.authStore.isValid && + (await event.locals.pb.collection("users").authRefresh()); + + if (event.locals.pb.authStore.isValid) { + event.locals.user = structuredClone(event.locals.pb.authStore.record) as UserModel; + } else { + event.locals.user = undefined; + } + } catch (_) { + event.locals.pb.authStore.clear(); + } + } + + const response = await resolve(event); + + return response; +} diff --git a/frontend/src/lib/ACalToAdd.svelte b/frontend/src/lib/ACalToAdd.svelte index 9d3bdcf..41fb0f3 100644 --- a/frontend/src/lib/ACalToAdd.svelte +++ b/frontend/src/lib/ACalToAdd.svelte @@ -1,28 +1,31 @@ -
- addToCalsToAdd(event, calendar.id)} - /> - -
\ No newline at end of file +
+ addToCalsToAdd(event, calendar.id)} + /> + +
diff --git a/frontend/src/lib/AnIncludedCalendar.svelte b/frontend/src/lib/AnIncludedCalendar.svelte index b3e794c..18e2701 100644 --- a/frontend/src/lib/AnIncludedCalendar.svelte +++ b/frontend/src/lib/AnIncludedCalendar.svelte @@ -1,75 +1,88 @@ {#if actualCalendar} -
- {#if actualCalendar.logo} -
- IFeed Avatar -
- {:else} -
- -
- {/if} - -
-
-

{actualCalendar.name}

- {#if !actualCalendar.filters.hideUnpublished} -
- - - - - - - This calendar can expose unpublished events. To change this, edit the filter settings of this calendar. - - -
- {/if} - {#if actualCalendar.passwordEnabled} -
- - - - - - - This calendar is password protected, but wont require a password in this image feed. If you dont want this calendar exposed without a password block, remove this calendar immediently! - - -
- {/if} -
-

- {actualCalendar.visits} visits -

-
+
+ {#if actualCalendar.logo} +
+ IFeed Avatar +
+ {:else} +
+ +
+ {/if} - -
-{/if} \ No newline at end of file +
+
+

{actualCalendar.name}

+ {#if !actualCalendar.filters.hideUnpublished} +
+ + + + + + + This calendar can expose unpublished events. To change this, edit the filter + settings of this calendar. + + +
+ {/if} + {#if actualCalendar.passwordEnabled} +
+ + + + + + + This calendar is password protected, but wont require a password in this image + feed. If you dont want this calendar exposed without a password block, remove this + calendar immediently! + + +
+ {/if} +
+

+ {actualCalendar.visits} visits +

+
+ + +
+{/if} diff --git a/frontend/src/lib/Calendar.svelte b/frontend/src/lib/Calendar.svelte index 17fddf0..25915aa 100644 --- a/frontend/src/lib/Calendar.svelte +++ b/frontend/src/lib/Calendar.svelte @@ -1,74 +1,110 @@ {#if calendarCustomizations.viewType === "month"} - + {:else if calendarCustomizations.viewType === "week"} - + {:else} -
-
- - - -
-
-{/if} \ No newline at end of file +
+
+ + + +
+
+{/if} diff --git a/frontend/src/lib/Day.svelte b/frontend/src/lib/Day.svelte index ef0e466..763ac11 100644 --- a/frontend/src/lib/Day.svelte +++ b/frontend/src/lib/Day.svelte @@ -1,36 +1,55 @@
-
-
- {#if dayNumber === 1} - Today - {:else if dayNumber === 2} - Tomorrow - {:else if dayNumber === 3} - Day after Tomorrow - {/if} -
-
{LONGDAYTOSTRING[day.dayOfWeek]}, {MONTHTOSTRING[day.month]} {day.day}
-
+
+
+ {#if dayNumber === 1} + Today + {:else if dayNumber === 2} + Tomorrow + {:else if dayNumber === 3} + Day after Tomorrow + {/if} +
+
+ {LONGDAYTOSTRING[day.dayOfWeek]}, {MONTHTOSTRING[day.month]} + {day.day} +
+
-
- {#each events as event (`eventListDat${day.toString()}${event.id}`)} - {#if !(!event.featured && filters.onlyShowFeatured) && !(!event.visibleInChurchCenter && filters.hideUnpublished)} - {#if dateRangeOverlaps(day.toInstant().epochMilliseconds, nextDay.toInstant().epochMilliseconds, (new Date(event.startTime)).valueOf(), (new Date(event.endTime)).valueOf())} - - {/if} - {/if} - {/each} -
-
\ No newline at end of file +
+ {#each events as event (`eventListDat${day.toString()}${event.id}`)} + {#if !(!event.featured && filters.onlyShowFeatured) && !(!event.visibleInChurchCenter && filters.hideUnpublished)} + {#if dateRangeOverlaps(day.toInstant().epochMilliseconds, nextDay.toInstant().epochMilliseconds, new Date(event.startTime).valueOf(), new Date(event.endTime).valueOf())} + + {/if} + {/if} + {/each} +
+ diff --git a/frontend/src/lib/DynamicFeedAvatar.svelte b/frontend/src/lib/DynamicFeedAvatar.svelte index d6a035f..e0ddd94 100644 --- a/frontend/src/lib/DynamicFeedAvatar.svelte +++ b/frontend/src/lib/DynamicFeedAvatar.svelte @@ -1,9 +1,9 @@
- -
\ No newline at end of file + + diff --git a/frontend/src/lib/Event.svelte b/frontend/src/lib/Event.svelte index 7d71b4b..e887b43 100644 --- a/frontend/src/lib/Event.svelte +++ b/frontend/src/lib/Event.svelte @@ -1,103 +1,173 @@ -
-
-

{event.name}

-

{#if EVENT_DAY_NUMBER !== 1}{MONTHTOSTRING[start.month]} {start.day}, {/if}

-
- - {#if event.description && calendarCustomizations.showDescription} -

{event.description}

- {/if} - -
- - {#if MULTI_DAY_EVENT} - {MONTHTOSTRING[start.month]} {start.day}, - {:else} - - {/if} -
- - {#if MULTI_DAY_EVENT} -
- - Multi-day event - Day {EVENT_DAY_NUMBER} -
- {/if} - - - - {#if event.times && event.times.length > 1} -
- -
-
Time Schedule:
-
- {#each event.times as time, index (`anEventTime${time.name}${event.id}`)} - {#if index+1 < event.times.length},
{/if} - {/each} -
-
-
- {/if} - - {#if event.location && calendarCustomizations.showLocation} -
- -

- Location: - {#if calendarCustomizations.onlyShowLocationTitle}{event.location.split(" - ")[0]}{:else}{event.location}{/if} -

-
- {/if} - - {#if event.expand.tags} -
- {#each event.expand.tags as tag (`taglist${tag.tag_id}${event.id}`)} -
- - {tag.name} - -
- {/each} -
- {/if} -
\ No newline at end of file +
+
+

+ {event.name} +

+

+ {#if EVENT_DAY_NUMBER !== 1}{MONTHTOSTRING[start.month]} {start.day}, + {/if} +

+
+ + {#if event.description && calendarCustomizations.showDescription} +

+ {event.description} +

+ {/if} + +
+ + {#if MULTI_DAY_EVENT} + {MONTHTOSTRING[start.month]} + {start.day}, + {:else} + + {/if} +
+ + {#if MULTI_DAY_EVENT} +
+ + Multi-day event - Day {EVENT_DAY_NUMBER} +
+ {/if} + + + + {#if event.times && event.times.length > 1} +
+ +
+
Time Schedule:
+
+ {#each event.times as time, index (`anEventTime${time.name}${event.id}`)} + {#if index + 1 < event.times.length},
{/if} + {/each} +
+
+
+ {/if} + + {#if event.location && calendarCustomizations.showLocation} +
+ +

+ Location: + {#if calendarCustomizations.onlyShowLocationTitle}{event.location.split( + " - " + )[0]}{:else}{event.location}{/if} +

+
+ {/if} + + {#if event.expand.tags} +
+ {#each event.expand.tags as tag (`taglist${tag.tag_id}${event.id}`)} +
+ + {tag.name} + +
+ {/each} +
+ {/if} +
diff --git a/frontend/src/lib/EventResources.svelte b/frontend/src/lib/EventResources.svelte index f0a2f30..e84ef31 100644 --- a/frontend/src/lib/EventResources.svelte +++ b/frontend/src/lib/EventResources.svelte @@ -1,48 +1,69 @@ {#if rooms.length > 0 && showRooms} -
- -

- Room{#if rooms.length > 1}s{/if}: - - {#each rooms as room, index} - {#if room.path_name}{room.path_name}\\{/if} {room.name}{#if index+1 < rooms.length}, {/if} - {/each} - -

-
+
+ +

+ Room{#if rooms.length > 1}s{/if}: + + {#each rooms as room, index} + {#if room.path_name}{room.path_name}\\{/if} + {room.name}{#if index + 1 < rooms.length}, + {/if} + {/each} + +

+
{/if} {#if res.length > 0 && showResources} -
- -

- Resource{#if res.length > 1}s{/if}: - - {#each res as resource, index} - {resource.name}{#if resource.path_name && showResourcePathname}({resource.path_name.trimEnd()}){/if}{#if index+1 < res.length}, {/if} - {/each} - -

-
-{/if} \ No newline at end of file +
+ +

+ Resource{#if res.length > 1}s{/if}: + + {#each res as resource, index} + {resource.name}{#if resource.path_name && showResourcePathname}({resource.path_name.trimEnd()}){/if}{#if index + 1 < res.length}, + {/if} + {/each} + +

+
+{/if} diff --git a/frontend/src/lib/EventTimes.svelte b/frontend/src/lib/EventTimes.svelte index affb51e..70920bf 100644 --- a/frontend/src/lib/EventTimes.svelte +++ b/frontend/src/lib/EventTimes.svelte @@ -1,13 +1,32 @@ -{time.name}: {#if multiDayEvent && start.day !== today.day}{MONTHTOSTRING[start.month]} {start.day}, {/if}