changes on main

This commit is contained in:
Luke Hagar
2025-05-27 17:36:23 -05:00
parent a5a3ed17d8
commit 6cc7266a92
14 changed files with 38 additions and 80 deletions

60
package-lock.json generated
View File

@@ -921,19 +921,6 @@
} }
} }
}, },
"node_modules/@rollup/pluginutils/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.41.1", "version": "4.41.1",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz",
@@ -5403,6 +5390,19 @@
"node": ">=8.6" "node": ">=8.6"
} }
}, },
"node_modules/micromatch/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/miller-rabin": { "node_modules/miller-rabin": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
@@ -5850,13 +5850,13 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=8.6" "node": ">=12"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/jonschlinkert" "url": "https://github.com/sponsors/jonschlinkert"
@@ -7176,19 +7176,6 @@
"url": "https://github.com/sponsors/SuperchupuDev" "url": "https://github.com/sponsors/SuperchupuDev"
} }
}, },
"node_modules/tinyglobby/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/to-regex-range": { "node_modules/to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -7657,19 +7644,6 @@
"vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
} }
}, },
"node_modules/vite/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/vitefu": { "node_modules/vitefu": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz",

View File

@@ -8,7 +8,7 @@
<script> <script>
// Set theme immediately to prevent flashing // Set theme immediately to prevent flashing
(function() { (function() {
const colorTheme = localStorage.getItem('colorTheme') || 'skeleton'; const colorTheme = localStorage.getItem('colorTheme') || 'legacy';
const darkMode = localStorage.getItem('darkMode') !== 'false'; // default to true const darkMode = localStorage.getItem('darkMode') !== 'false'; // default to true
// Handle dark mode class on html element // Handle dark mode class on html element

View File

@@ -3,7 +3,7 @@
import { toaster } from '$lib'; import { toaster } from '$lib';
import ThemeSwitch from '$lib/components/ThemeSwitch.svelte'; import ThemeSwitch from '$lib/components/ThemeSwitch.svelte';
import { Avatar, Modal, Toaster } from '@skeletonlabs/skeleton-svelte'; import { Avatar, Modal, Toaster } from '@skeletonlabs/skeleton-svelte';
import { BookOpen, DollarSign, Home, LayoutDashboard, LogOut, User } from 'lucide-svelte'; import { BookOpen, DollarSign, Home, LayoutDashboard, LogOut, User } from '@lucide/svelte';
import 'prism-themes/themes/prism-vsc-dark-plus.css'; import 'prism-themes/themes/prism-vsc-dark-plus.css';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import '../app.css'; import '../app.css';

View File

@@ -1,13 +1,8 @@
<script lang="ts"> <script lang="ts">
// Icons // Icons
import { Rocket, Database, Zap, Star, Users, GitBranch } from 'lucide-svelte'; import { Rocket, Database, Zap, Star, Users, GitBranch } from '@lucide/svelte';
interface Props {
// Props are passed from the root +layout.svelte
data: any; // Contains session from +layout.server.ts, then updated by +layout.svelte
}
let { data }: Props = $props(); let { data } = $props();
</script> </script>
<div class="container mx-auto py-20 space-y-20"> <div class="container mx-auto py-20 space-y-20">

View File

@@ -2,8 +2,7 @@
import { supabase } from '$lib/supabaseClient'; import { supabase } from '$lib/supabaseClient';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import { toaster } from '$lib'; import { toaster } from '$lib';
import { Mail, Lock, LogIn, UserPlus, Github, Chrome, MessageCircle, Twitter, Star, Eye, EyeOff } from 'lucide-svelte'; import { Mail, Lock, LogIn, UserPlus, Github, Chrome, MessageCircle, Twitter, Star, Eye, EyeOff } from '@lucide/svelte';
import { page } from '$app/stores';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
let activeTab = $state('login'); // 'login' or 'signup' let activeTab = $state('login'); // 'login' or 'signup'

View File

@@ -1,5 +1,5 @@
import { redirect } from '@sveltejs/kit'; import { redirect } from '@sveltejs/kit';
export function load() { export const load = () => {
throw redirect(302, '/auth'); throw redirect(302, '/auth');
} };

View File

@@ -1,8 +1,7 @@
// src/routes/auth/logout/+page.server.ts // src/routes/auth/logout/+page.server.ts
import { redirect } from '@sveltejs/kit'; import { redirect } from '@sveltejs/kit';
import type { Actions } from './$types';
export const actions: Actions = { export const actions = {
default: async ({ locals: { supabase } }) => { default: async ({ locals: { supabase } }) => {
await supabase.auth.signOut(); await supabase.auth.signOut();
throw redirect(303, '/'); throw redirect(303, '/');

View File

@@ -1,7 +1,7 @@
<script lang="ts"> <script lang="ts">
import { supabase } from '$lib/supabaseClient'; import { supabase } from '$lib/supabaseClient';
import { toaster } from '$lib'; import { toaster } from '$lib';
import { Mail, Send, ArrowLeft, KeyRound } from 'lucide-svelte'; import { Mail, Send, ArrowLeft, KeyRound } from '@lucide/svelte';
let email = $state(''); let email = $state('');
let loading = $state(false); let loading = $state(false);

View File

@@ -1,8 +1,9 @@
<script lang="ts"> <script lang="ts">
import { supabase } from '$lib/supabaseClient';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import { toaster } from '$lib'; import { toaster } from '$lib';
import { Lock, Save, Eye, EyeOff, KeyRound } from 'lucide-svelte'; import { supabase } from '$lib/supabaseClient';
import { Eye, EyeOff, KeyRound, Lock, Save } from '@lucide/svelte';
import type { Session } from '@supabase/supabase-js';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
let password = $state(''); let password = $state('');
@@ -10,7 +11,7 @@
let loading = $state(false); let loading = $state(false);
let showPassword = $state(false); let showPassword = $state(false);
let showConfirmPassword = $state(false); let showConfirmPassword = $state(false);
let session = $state(null); let session = $state<Session | null>(null);
onMount(async () => { onMount(async () => {
// Check if user is authenticated (came from reset link) // Check if user is authenticated (came from reset link)
@@ -63,7 +64,7 @@
description: 'Your password has been successfully updated.' description: 'Your password has been successfully updated.'
}); });
goto('/dashboard'); goto('/app/dashboard');
} catch (error: any) { } catch (error: any) {
toaster.create({ toaster.create({
type: 'error', type: 'error',

View File

@@ -1,13 +1,7 @@
<script lang="ts"> <script lang="ts">
import type { PageData } from './$types'; import { Calendar, User, Tag, BookOpen, Star } from '@lucide/svelte';
import type { BlogPost } from '$lib/blog';
import { Calendar, User, Tag, BookOpen, Star } from 'lucide-svelte';
interface Props {
data: PageData & { posts: BlogPost[] };
}
let { data }: Props = $props(); let { data } = $props();
const formatDate = (dateString: string) => { const formatDate = (dateString: string) => {
return new Date(dateString).toLocaleDateString('en-US', { return new Date(dateString).toLocaleDateString('en-US', {

View File

@@ -1,5 +1,5 @@
// src/routes/blog/[slug]/+page.server.ts // src/routes/blog/[slug]/+page.server.ts
import { getAllPosts, getPostBySlug } from '$lib/blog'; import { getPostBySlug } from '$lib/blog';
import { error } from '@sveltejs/kit'; import { error } from '@sveltejs/kit';
export const load = async ({ params }) => { export const load = async ({ params }) => {

View File

@@ -2,13 +2,9 @@
import type { PageData } from './$types'; import type { PageData } from './$types';
import type { BlogPost } from '$lib/blog'; import type { BlogPost } from '$lib/blog';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { Calendar, User, Tag, Share2, ArrowLeft, Star, Twitter, Linkedin } from 'lucide-svelte'; import { Calendar, User, Tag, Share2, ArrowLeft, Star, Twitter, Linkedin } from '@lucide/svelte';
interface Props { let { data } = $props();
data: PageData & { post: BlogPost; slug: string };
}
let { data }: Props = $props();
let post = $derived(data.post); let post = $derived(data.post);
let component: any = $state(null); let component: any = $state(null);
let loading = $state(true); let loading = $state(true);

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { Mail, Phone, MapPin, Send, MessageCircle, Clock } from 'lucide-svelte'; import { Mail, Phone, MapPin, Send, MessageCircle, Clock } from '@lucide/svelte';
import { toaster } from '$lib'; import { toaster } from '$lib';
let formData = $state({ let formData = $state({

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
// Icons // Icons
import { Check, X, Star, Zap, Crown, Mail } from 'lucide-svelte'; import { Check, X, Star, Zap, Crown, Mail } from '@lucide/svelte';
interface Props { interface Props {
// Assuming session might be useful here, though not directly used in this basic structure // Assuming session might be useful here, though not directly used in this basic structure