Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
647cba8
Upgrade SvelteKit to fix prefetching
AndrewLester Mar 17, 2022
3ce286c
Update SvelteKit to most recent version
AndrewLester Jul 14, 2022
f402e2d
Update general config files
AndrewLester Jul 14, 2022
90e185b
Replace globals.d.ts and separate app css and html
AndrewLester Jul 14, 2022
0424b8f
Rename HTMLProps to HTMLAttributes in additionall svelte JSX
AndrewLester Jul 14, 2022
249b6b0
Fix hooks import
AndrewLester Jul 14, 2022
0b5b705
Don't use onClick prop instead forward click event
AndrewLester Jul 14, 2022
e8465b7
Refactor imports to reflect aliases and fix many types
AndrewLester Jul 14, 2022
49c0182
Make work with us swap more explicit
AndrewLester Jul 14, 2022
8d59b0b
Refactor load functions to use types
AndrewLester Jul 14, 2022
eeba23c
Fix some template type errors by using new svelte template tags
AndrewLester Jul 14, 2022
cc5e920
Add prepare script and fix formatting
AndrewLester Jul 14, 2022
260cbf4
Set prerender default to true
AndrewLester Jul 14, 2022
cffee83
Replace navigation end event with afterNavigate lifecycle function
AndrewLester Jul 14, 2022
8e61e4d
Remove some build steps by integrating 404 page and minification
AndrewLester Jul 15, 2022
e3e8157
Use any types without reducing safety elsewhere
AndrewLester Jul 15, 2022
e65e7f7
Upgrade eslint plugin
AndrewLester Jul 15, 2022
c42d4dd
Split build script into post build
AndrewLester Jul 15, 2022
2634936
Only run ackee if variables exist
AndrewLester Jul 17, 2022
78ae77b
Fix refetch of layout
AndrewLester Jul 17, 2022
c700407
Fix svelte:head swapping
AndrewLester Jul 17, 2022
74aeab6
Revert separation of css from app.html and create root layout
AndrewLester Jul 17, 2022
663f29b
Fix intersection observer and api client typing with same structure
AndrewLester Jul 17, 2022
2e48a60
Fix format
AndrewLester Jul 17, 2022
23a337a
Upgrade SvelteKit again
AndrewLester Jul 17, 2022
cc208de
Set preview port to 3000
AndrewLester Jul 17, 2022
e1d6c3b
Use SvelteKit dev variable for prod check
AndrewLester Jul 17, 2022
37d4d24
Fix 404 page not showing up
AndrewLester Jul 17, 2022
f167e32
Update readme for SvelteKit clarification
AndrewLester Jul 21, 2022
7ee7e5a
Remove ambient ts
AndrewLester Jul 21, 2022
29d2cd6
Revert "Remove ambient ts"
AndrewLester Jul 21, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
module.exports = {
root: true,
parser: "@typescript-eslint/parser",
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier",
],
plugins: ["svelte3", "@typescript-eslint"],
rules: {
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": "off",
},
ignorePatterns: ["*.cjs", "*.config.js", "*.d.ts"],
overrides: [{ files: ["*.svelte"], processor: "svelte3/svelte3" }],
Expand All @@ -14,7 +19,7 @@ module.exports = {
},
parserOptions: {
sourceType: "module",
ecmaVersion: 2019,
ecmaVersion: 2020,
},
env: {
browser: true,
Expand Down
5 changes: 5 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"singleQuote": false,
"trailingComma": "es5",
"printWidth": 80
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Most crucially, Contentful's rich text support is utilized in our project pages

### Setup

This website requires Node 14 in order to support SvelteKit.
This website requires Node 16 in order to support SvelteKit.

#### Dependencies

Expand Down
1 change: 0 additions & 1 deletion globals.d.ts

This file was deleted.

1,938 changes: 1,164 additions & 774 deletions package-lock.json

Large diffs are not rendered by default.

28 changes: 15 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,31 @@
"description": "Hack4Impact UIUC's chapter website.",
"version": "0.0.1",
"scripts": {
"build": "svelte-kit build && npm run build:404 && npm run minify && npm run build:images",
"build:404": "mv build/404/index.html build/404.html && rm -rf build/404",
"build:images": "node scripts/loadImages.js",
"build": "vite build",
"postbuild": "node scripts/loadImages.js",
"check": "svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-check --tsconfig ./tsconfig.json --watch",
"dev": "svelte-kit dev",
"dev": "vite dev",
"format": "prettier --write --plugin-search-dir=. .",
"format:check": "prettier --check --plugin-search-dir=. .",
"minify": "html-minifier-terser --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --remove-tag-whitespace --use-short-doctype --minify-css --minify-js --collapse-boolean-attributes --input-dir build --output-dir build --file-ext html",
"lint": "eslint src",
"lint:fix": "eslint --fix src",
"prebuild": "rm -rf build",
"preview": "svelte-kit preview"
"preview": "vite preview",
"prepare": "svelte-kit sync"
},
"devDependencies": {
"@contentful/rich-text-html-renderer": "^15.0.0",
"@contentful/rich-text-types": "^15.0.0",
"@sveltejs/adapter-static": "1.0.0-next.22",
"@sveltejs/kit": "1.0.0-next.202",
"@sveltejs/adapter-static": "1.0.0-next.37",
"@sveltejs/kit": "1.0.0-next.377",
"@types/ackee-tracker": "^5.0.1",
"@typescript-eslint/eslint-plugin": "^4.19.0",
"@typescript-eslint/parser": "^4.19.0",
"@types/html-minifier-terser": "^6.1.0",
"@typescript-eslint/eslint-plugin": "^5.30.6",
"@typescript-eslint/parser": "^5.30.6",
"dotenv": "^10.0.0",
"eslint": "^7.22.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte3": "^3.2.0",
"html-minifier-terser": "^6.1.0",
"prettier": "~2.5.1",
Expand All @@ -35,13 +36,14 @@
"svelte-check": "^2.0.0",
"svelte-preprocess": "^4.0.0",
"tslib": "^2.0.0",
"typescript": "^4.0.0"
"typescript": "^4.0.0",
"vite": "^3.0.0"
},
"type": "module",
"dependencies": {
"@svicons/boxicons-regular": "^0.1.3",
"@svicons/boxicons-solid": "^0.1.3",
"ackee-tracker": "^5.1.0",
"contentful": "^9.1.5"
}
},
"type": "module"
}
2 changes: 1 addition & 1 deletion src/additional-svelte-jsx.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
declare namespace svelte.JSX {
interface HTMLProps<T> {
interface HTMLAttributes<T> {
onenterViewport?: () => void;
}
}
11 changes: 11 additions & 0 deletions src/app.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/// <reference types="@sveltejs/kit" />

// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
// and what to do when importing types
declare namespace App {
// interface Locals {}
// interface Platform {}
// interface Session {}
// interface Stuff {}
}
5 changes: 3 additions & 2 deletions src/app.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
content="Hack4Impact, Hack, Impact, Software for good, UIUC, University of Illinois, University of Illinois Urbana-Champaign, Nonprofit, Social good, Civic tech"
/>

%svelte.head%
%sveltekit.head%

<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
<link rel="icon" type="image/png" href="/logo-16.png" sizes="16x16" />
Expand Down Expand Up @@ -254,7 +254,8 @@
}
</style>
</head>

<body>
%svelte.body%
%sveltekit.body%
</body>
</html>
4 changes: 1 addition & 3 deletions src/components/Button.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,11 @@

// append hover-animated arrow
export let arrow: boolean | undefined = false;

export let onClick: () => void | undefined = undefined;
</script>

<button
class="button-{type}{arrow ? ' arrow' : ''}"
on:click={onClick}
on:click
style={type.endsWith("custom")
? `background-color: ${
type.startsWith("primary") ? backgroundColor : "transparent"
Expand Down
2 changes: 1 addition & 1 deletion src/components/Footer.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { semesterToId } from "$lib/utils/schema";
import { semesterToId } from "$utils/schema";

export let semesters: string[];
</script>
Expand Down
42 changes: 20 additions & 22 deletions src/components/Head.svelte
Original file line number Diff line number Diff line change
@@ -1,33 +1,31 @@
<script lang="ts">
import { onMount } from "svelte";

export let title: string;
export let description: string;
export let url: string;
export let image: string | undefined;

onMount(() => (document.title = title));
</script>

<title>{title}</title>
<meta name="description" content={description} />
<svelte:head>
<title>{title}</title>
<meta name="description" content={description} />

<meta property="og:type" content="website" />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content={url} />
<meta property="og:type" content="website" />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content={url} />

<meta name="twitter:domain" value="https://uiuc.hack4impact.org" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:url" content={url} />
<meta name="twitter:domain" value="https://uiuc.hack4impact.org" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:url" content={url} />

<meta
name="twitter:card"
content={image !== undefined ? "summary_large_image" : "summary"}
/>
<meta
name="twitter:card"
content={image !== undefined ? "summary_large_image" : "summary"}
/>

{#if image !== undefined}
<meta property="og:image" content={image} />
<meta name="twitter:image" content={image} />
{/if}
{#if image !== undefined}
<meta property="og:image" content={image} />
<meta name="twitter:image" content={image} />
{/if}
</svelte:head>
2 changes: 1 addition & 1 deletion src/components/Member.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { Member, setImageHeight } from "$lib/utils/schema";
import { type Member, setImageHeight } from "$utils/schema";

export let member: Member;
</script>
Expand Down
18 changes: 11 additions & 7 deletions src/components/Nav.svelte
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
<script lang="ts">
export let path: string | undefined;
import { afterNavigate } from "$app/navigation";
import { page } from "$app/stores";

const dropdownRoutes = ["Nonprofits", "Sponsors", "Students"];
const workWithUsTabLimit = 792;

let windowWidth: number | undefined;
let windowWidth: number = workWithUsTabLimit + 1; // By default, make "Work With Us" tabbable
let showMobileMenu = false;

$: workWithUsTabIndex = windowWidth > workWithUsTabLimit ? 0 : -1;
$: path = $page.url.pathname;

afterNavigate(() => (showMobileMenu = false));
</script>

<svelte:window
bind:innerWidth={windowWidth}
on:sveltekit:navigation-end={() => (showMobileMenu = false)}
/>
<svelte:window bind:innerWidth={windowWidth} />

<nav class="row-center">
<div class="row-center" id="nav-contents">
Expand Down Expand Up @@ -48,7 +52,7 @@
>
<span
class="navlink dropdown"
tabindex={windowWidth > 792 ? 0 : -1}
tabindex={workWithUsTabIndex}
aria-current={path && path.startsWith("/join") ? "page" : undefined}
>
<h2>Work With Us<span id="caret"> &#9660;</span></h2>
Expand Down
2 changes: 1 addition & 1 deletion src/components/Step.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts" context="module">
import Icon, { IconType } from "$lib/components/Icon.svelte";
import Icon, { type IconType } from "$components/Icon.svelte";
</script>

<script lang="ts">
Expand Down
2 changes: 1 addition & 1 deletion src/components/Testimonial.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { setImageHeight } from "$lib/utils/schema";
import { setImageHeight } from "$utils/schema";

import Button from "./Button.svelte";
import Row from "./Row.svelte";
Expand Down
4 changes: 2 additions & 2 deletions src/components/projects/FeaturedBanner.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import { setImageHeight } from "$lib/utils/schema";
import type { Project } from "$lib/utils/schema";
import { setImageHeight } from "$utils/schema";
import type { Project } from "$utils/schema";

export let project: Project;
</script>
Expand Down
2 changes: 1 addition & 1 deletion src/components/projects/Member.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { Member, setImageHeight } from "$lib/utils/schema";
import { type Member, setImageHeight } from "$utils/schema";

export let member: Member;
export let role: string;
Expand Down
6 changes: 3 additions & 3 deletions src/components/projects/ProjectCard.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import Button from "$lib/components/Button.svelte";
import { setImageHeight } from "$lib/utils/schema";
import type { Project } from "$lib/utils/schema";
import Button from "$components/Button.svelte";
import { setImageHeight } from "$utils/schema";
import type { Project } from "$utils/schema";

export let project: Project;
</script>
Expand Down
40 changes: 35 additions & 5 deletions src/hooks.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,43 @@
import dotenv from "dotenv";
import { ContentWrapper } from "./utils/api";
import { ContentWrapper } from "$utils/api";
import { minify, type Options } from "html-minifier-terser";
import { prerendering } from "$app/env";
import type { Handle } from "@sveltejs/kit";

dotenv.config();

const { CONTENTFUL_DELIVERY_KEY, CONTENTFUL_SPACE_ID } = process.env;

const contentWrapper = new ContentWrapper(
CONTENTFUL_SPACE_ID,
CONTENTFUL_DELIVERY_KEY
export const contentWrapper = new ContentWrapper(
CONTENTFUL_SPACE_ID!,
CONTENTFUL_DELIVERY_KEY!
);

export { contentWrapper };
const minificationOptions: Options = {
collapseBooleanAttributes: true,
collapseWhitespace: true,
minifyCSS: true,
minifyJS: true,
removeComments: true,
removeOptionalTags: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeTagWhitespace: true,
useShortDoctype: true,
};

export const handle: Handle = async ({ event, resolve }) => {
const response = await resolve(event);

if (prerendering && response.headers.get("content-type") === "text/html") {
return new Response(
await minify(await response.text(), minificationOptions),
{
status: response.status,
headers: response.headers,
}
);
}

return response;
};
19 changes: 0 additions & 19 deletions src/routes/404.svelte

This file was deleted.

Loading