your personal website on atproto - mirror blento.app

small fixes

Florian 682b03f5 c72037d9

+39 -5
+1 -1
src/lib/cards/BaseCard/BaseCard.svelte
··· 40 bind:this={ref} 41 draggable={isEditing} 42 class={[ 43 - 'card group focus-within:outline-accent-500 @container/card absolute z-0 rounded-3xl outline-offset-2 transition-all duration-200 focus-within:outline-2 isolate', 44 color ? (colors[color] ?? colors.accent) : colors.base, 45 color !== 'accent' && item.color !== 'base' && item.color !== 'transparent' ? color : '', 46 showOutline ? 'outline-2' : '',
··· 40 bind:this={ref} 41 draggable={isEditing} 42 class={[ 43 + 'card group selection:bg-accent-600/50 focus-within:outline-accent-500 @container/card absolute z-0 rounded-3xl outline-offset-2 transition-all duration-200 focus-within:outline-2 isolate', 44 color ? (colors[color] ?? colors.accent) : colors.base, 45 color !== 'accent' && item.color !== 'base' && item.color !== 'transparent' ? color : '', 46 showOutline ? 'outline-2' : '',
+9
src/lib/cards/BigSocialCard/index.ts
··· 154 medium: siMedium, 155 devto: siDevdotto, 156 hashnode: siHashnode, 157 158 // support / monetization 159 patreon: siPatreon,
··· 154 medium: siMedium, 155 devto: siDevdotto, 156 hashnode: siHashnode, 157 + linkedin: { 158 + slug: 'linkedin', 159 + path: '', 160 + title: 'LinkedIn', 161 + hex: '0A66C2', 162 + source: 'https://brand.linkedin.com', 163 + guidelines: 'https://brand.linkedin.com/policies', 164 + svg: `<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>` 165 + }, 166 167 // support / monetization 168 patreon: siPatreon,
+3 -3
src/lib/cards/GameCards/DinoGameCard/DinoGameCard.svelte
··· 442 drawSprite(playerSprite, player.x, playerY, player.width, drawHeight); 443 444 // Draw score 445 - ctx.fillStyle = '#000000'; 446 ctx.font = `bold ${Math.max(12, Math.floor(14 * (scale / 2.5)))}px monospace`; 447 ctx.textAlign = 'right'; 448 ctx.fillText(String(score).padStart(5, '0'), canvasWidth - 10, 25); 449 450 if (highScore > 0) { 451 - ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; 452 ctx.fillText( 453 'HI ' + String(highScore).padStart(5, '0'), 454 canvasWidth - 70 * (scale / 2.5), ··· 458 459 // Draw game over text (no overlay background) 460 if (gameState === 'gameover') { 461 - ctx.fillStyle = '#000000'; 462 ctx.font = `bold ${Math.max(14, Math.floor(20 * (scale / 2.5)))}px monospace`; 463 ctx.textAlign = 'center'; 464 ctx.fillText('GAME OVER', canvasWidth / 2, canvasHeight / 2 - 40);
··· 442 drawSprite(playerSprite, player.x, playerY, player.width, drawHeight); 443 444 // Draw score 445 + ctx.fillStyle = '#ffffff'; 446 ctx.font = `bold ${Math.max(12, Math.floor(14 * (scale / 2.5)))}px monospace`; 447 ctx.textAlign = 'right'; 448 ctx.fillText(String(score).padStart(5, '0'), canvasWidth - 10, 25); 449 450 if (highScore > 0) { 451 + ctx.fillStyle = 'rgba(256, 256, 256, 0.5)'; 452 ctx.fillText( 453 'HI ' + String(highScore).padStart(5, '0'), 454 canvasWidth - 70 * (scale / 2.5), ··· 458 459 // Draw game over text (no overlay background) 460 if (gameState === 'gameover') { 461 + ctx.fillStyle = '#ffffff'; 462 ctx.font = `bold ${Math.max(14, Math.floor(20 * (scale / 2.5)))}px monospace`; 463 ctx.textAlign = 'center'; 464 ctx.fillText('GAME OVER', canvasWidth / 2, canvasHeight / 2 - 40);
+1 -1
src/lib/cards/TextCard/TextCard.svelte
··· 13 14 <div 15 class={cn( 16 - 'prose dark:prose-invert prose-neutral prose-sm prose-a:no-underline prose-a:text-accent-600 dark:prose-a:text-accent-400 accent:prose-a:text-accent-950 accent:prose-a:underline accent:prose-p:text-base-900 prose-p:first:mt-0 prose-p:last:mb-0 prose-headings:first:mt-0 prose-headings:last:mb-0 inline-flex h-full min-h-full w-full max-w-none overflow-y-scroll rounded-md p-3 text-lg', 17 textAlignClasses?.[item.cardData.textAlign as string], 18 verticalAlignClasses[item.cardData.verticalAlign as string], 19 textSizeClasses[(item.cardData.textSize ?? 0) as number]
··· 13 14 <div 15 class={cn( 16 + 'prose dark:prose-invert prose-neutral prose-sm prose-a:no-underline prose-a:text-accent-600 dark:prose-a:text-accent-400 accent:prose-a:text-accent-950 accent:prose-a:underline accent:prose-p:text-base-900 prose-p:first:mt-0 prose-p:last:mb-0 prose-headings:first:mt-0 prose-headings:last:mb-0 inline-flex h-full min-h-full w-full max-w-none overflow-y-scroll rounded-md p-3 text-lg overflow-x-hidden', 17 textAlignClasses?.[item.cardData.textAlign as string], 18 verticalAlignClasses[item.cardData.verticalAlign as string], 19 textSizeClasses[(item.cardData.textSize ?? 0) as number]
+25
src/routes/api/reloadRecent/+server.ts
···
··· 1 + import { getProfile } from '$lib/oauth/atproto'; 2 + import type { ProfileViewDetailed } from '@atproto/api/dist/client/types/app/bsky/actor/defs'; 3 + import { json } from '@sveltejs/kit'; 4 + 5 + export async function GET({ platform }) { 6 + if (!platform?.env?.USER_DATA_CACHE) return json('no cache'); 7 + const existingUsers = await platform?.env?.USER_DATA_CACHE?.get('updatedBlentos'); 8 + 9 + const existingUsersArray: ProfileViewDetailed[] = existingUsers ? JSON.parse(existingUsers) : []; 10 + 11 + const existingUsersSet = new Set(existingUsersArray.map((v) => v.did)); 12 + 13 + const newProfilesPromises: Promise<ProfileViewDetailed>[] = []; 14 + for (const did of Array.from(existingUsersSet)) { 15 + const profile = getProfile({ did }); 16 + newProfilesPromises.push(profile); 17 + if (newProfilesPromises.length > 20) break; 18 + } 19 + 20 + const newProfiles = await Promise.all(newProfilesPromises); 21 + 22 + await platform?.env?.USER_DATA_CACHE.put('updatedBlentos', JSON.stringify(newProfiles)); 23 + 24 + return json('ok'); 25 + }