optimize images for faster loading, fix meta description tag
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 309 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 310 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 266 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 235 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 252 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 319 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 56 KiB |
@@ -1,3 +1,6 @@
|
||||
import "@fontsource-variable/ibm-plex-sans";
|
||||
import "@phosphor-icons/web/regular/style.css";
|
||||
|
||||
import { i18n } from "@lingui/core";
|
||||
import { I18nProvider } from "@lingui/react";
|
||||
import { IconContext } from "@phosphor-icons/react";
|
||||
@@ -50,7 +53,7 @@ export const Route = createRootRouteWithContext<RouterContext>()({
|
||||
meta: [
|
||||
{ title },
|
||||
{ charSet: "UTF-8" },
|
||||
{ meta: "description", content: description },
|
||||
{ name: "description", content: description },
|
||||
{ name: "viewport", content: "width=device-width, initial-scale=1" },
|
||||
// Twitter Tags
|
||||
{ property: "twitter:image", content: `${appUrl}/opengraph/banner.jpg` },
|
||||
|
||||
@@ -27,6 +27,7 @@ export function Hero() {
|
||||
muted
|
||||
autoPlay
|
||||
playsInline
|
||||
fetchpriority="high"
|
||||
src="/videos/timelapse.webm"
|
||||
aria-label={t`Timelapse demonstration of building a resume with Reactive Resume`}
|
||||
className="pointer-events-none aspect-video size-full rounded-lg border object-cover shadow-2xl"
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
@import "tw-animate-css";
|
||||
@import "shadcn/tailwind.css";
|
||||
|
||||
/* Fonts */
|
||||
@import "@fontsource-variable/ibm-plex-sans";
|
||||
|
||||
/* Phosphor Icons */
|
||||
@import "@phosphor-icons/web/regular/style.css";
|
||||
|
||||
@custom-variant dark (&:is(.dark *));
|
||||
|
||||
:root {
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
/// <reference types="vite-plugin-pwa/client" />
|
||||
|
||||
import type { AriaAttributes, DOMAttributes } from "react";
|
||||
|
||||
declare const __APP_VERSION__: string;
|
||||
|
||||
declare module "*.css";
|
||||
declare module "@fontsource/*" {}
|
||||
declare module "@fontsource-variable/*" {}
|
||||
|
||||
declare module "react" {
|
||||
interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
|
||||
fetchpriority?: "high" | "low" | "auto";
|
||||
}
|
||||
}
|
||||
|
||||
declare namespace NodeJS {
|
||||
interface ProcessEnv {
|
||||
// Basics
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedSideEffectImports": true,
|
||||
"noUncheckedSideEffectImports": false,
|
||||
|
||||
/* Paths */
|
||||
"baseUrl": ".",
|
||||
|
||||