Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers

add logos

+60 -40
+2
assets/css/stylesheet.css
··· 11 } 12 h2, h4 { 13 display: flex; 14 margin-bottom: 0px; 15 } 16 img { 17 float: left;
··· 11 } 12 h2, h4 { 13 display: flex; 14 + margin-top: 2px; 15 margin-bottom: 0px; 16 + line-height: unset; 17 } 18 img { 19 float: left;
assets/favicon.ico

This is a binary file and will not be displayed.

assets/favicon.png

This is a binary file and will not be displayed.

+1 -1
assets/icons/success.svg
··· 1 - <svg fill="#ffffff" width="24px" height="24px" viewBox="-2.04 -2.04 24.48 24.48" xmlns="http://www.w3.org/2000/svg" class="cf-icon-svg" stroke="#ffffff" stroke-width="0.00020400000000000003" transform="rotate(0)matrix(1, 0, 0, 1, 0, 0)"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round" stroke="#CCCCCC" stroke-width="0.040799999999999996"></g><g id="SVGRepo_iconCarrier"><path d="M16.417 10.283A7.917 7.917 0 1 1 8.5 2.366a7.916 7.916 0 0 1 7.917 7.917zm-4.105-4.498a.791.791 0 0 0-1.082.29l-3.828 6.63-1.733-2.08a.791.791 0 1 0-1.216 1.014l2.459 2.952a.792.792 0 0 0 .608.285.83.83 0 0 0 .068-.003.791.791 0 0 0 .618-.393L12.6 6.866a.791.791 0 0 0-.29-1.081z"></path></g></svg>
··· 1 + <svg fill="#ffffff" width="24px" height="24px" viewBox="-3.8 -2 24.48 24.48" xmlns="http://www.w3.org/2000/svg" class="cf-icon-svg" stroke="#ffffff" stroke-width="0.00020400000000000003" transform="rotate(0)matrix(1, 0, 0, 1, 0, 0)"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round" stroke="#CCCCCC" stroke-width="0.040799999999999996"></g><g id="SVGRepo_iconCarrier"><path d="M16.417 10.283A7.917 7.917 0 1 1 8.5 2.366a7.916 7.916 0 0 1 7.917 7.917zm-4.105-4.498a.791.791 0 0 0-1.082.29l-3.828 6.63-1.733-2.08a.791.791 0 1 0-1.216 1.014l2.459 2.952a.792.792 0 0 0 .608.285.83.83 0 0 0 .068-.003.791.791 0 0 0 .618-.393L12.6 6.866a.791.791 0 0 0-.29-1.081z"></path></g></svg>
+7
assets/logo.svg
···
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> 3 + <path class="cls-1" fill="#80b3e0" d="M512,307.73c0-57.89-46.93-104.82-104.81-104.82-2.69,0-5.37.1-8.01.3-10.59-59.01-62.19-103.8-124.25-103.8-54.49,0-100.91,34.52-118.6,82.88-7.61-3.13-15.94-4.86-24.68-4.86-35.92,0-65.04,29.12-65.04,65.04,0,.73.03,1.46.06,2.19C28.54,253.02,0,286.97,0,327.6c0,46.3,37.05,83.92,83.11,84.89v.05l344.3.05h.25c48.21-9.43,84.33-53.89,84.33-104.86Z"/> 4 + <path fill="#64a1d7" d="M83.11,412.49v.05h344.29l.34-.03c48.21-9.42,84.25-53.82,84.25-104.79,0-9.3-1.22-18.31-3.49-26.89-60.13,108.31-147.38,45.08-147.38,45.08,0,0-49.7,50.69-103.27,49.19-53.57-1.5-78.58-33.38-78.58-33.38C48.21,401.84,0,327.6,0,327.6c0,46.3,37.05,83.92,83.11,84.89Z"/> 5 + <circle fill="#fff" cx="266.08" cy="279.09" r="110.23"/> 6 + <path fill="#3c5479" d="M338.56,233.6l-17.64-17.6-56.69,56.7-22.05-22.03-17.65,17.57v-.24s-.05.08-.07.12c.02.16,0,.33-.02.49.02.02.04.05.07.07v-.31s39.71,39.71,39.71,39.71l74.37-74.37-.02-.1Z"/> 7 + </svg>
+12 -4
src/layout/helpers/logo.tsx
··· 1 import { APP_NAME } from "../../siteinfo"; 2 3 - export function LogoImage() { 4 - if (true) 5 return null; 6 7 - // we can put on some more flags later to do things with like svg shenanigans 8 return (<> 9 - <img src="/logo.png" alt={`${APP_NAME} logo`} width="64px" height="64px" /> 10 </>); 11 }
··· 1 import { APP_NAME } from "../../siteinfo"; 2 3 + type LogoImageProps = { 4 + enabled?: boolean; 5 + width: number; 6 + height: number; 7 + }; 8 + 9 + export function LogoImage(props: LogoImageProps) { 10 + if (props.enabled == false) 11 return null; 12 13 + let width: number = props.width || 32; 14 + let height: number = props.height || 32; 15 + 16 return (<> 17 + <img src="/logo.svg" alt={`${APP_NAME} logo`} width={`${width}px`} height={`${height}px`} /> 18 </>); 19 }
+1 -1
src/layout/helpers/navTags.tsx
··· 7 <div class="container navHeader"> 8 <div> 9 <a href="/" title={`${APP_NAME} homepage`}> 10 - <LogoImage /> 11 <h2 class="secondary">{APP_NAME}</h2> 12 </a> 13 </div>
··· 7 <div class="container navHeader"> 8 <div> 9 <a href="/" title={`${APP_NAME} homepage`}> 10 + <LogoImage width={64} height={64} /> 11 <h2 class="secondary">{APP_NAME}</h2> 12 </a> 13 </div>
+34 -32
src/layout/main.tsx
··· 14 preloads?: PreloadRules[] 15 }; 16 17 - export const BaseLayout = ({ 18 - children, 19 - title, 20 - noIndex = false, 21 - mainClass = "", 22 - preloads = [] 23 - }: BaseLayoutProps) => { 24 const layout = ( 25 - <html data-theme="dark" lang="en"> 26 - <head> 27 - <meta charset="UTF-8" /> 28 - <title>{APP_NAME} - {title}</title> 29 - {noIndex ? <meta name="robots" content="noindex" /> : null} 30 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 31 - <link rel="preload" href="/dep/htmx.min.js" as="script" /> 32 - <link rel="preload" href="/dep/toastify.js" as="script" /> 33 - <PreloadDependencyTags scripts={preloads} /> 34 35 - <link rel="stylesheet" type="text/css" href="/dep/toastify.min.css" /> 36 - <script type="text/javascript" src="/dep/htmx.min.js"></script> 37 - <script type="text/javascript" src="/dep/toastify.js"></script> 38 - <link rel="stylesheet" href="/dep/pico.min.css" /> 39 - <link rel="stylesheet" href="/css/stylesheet.min.css" /> 40 - <script type="text/javascript" src={mainScriptStr}></script> 41 - <MetaTags /> 42 - </head> 43 - <body> 44 - <container class="pico"> 45 - <main class={mainClass}> 46 - {children} 47 - </main> 48 - </container> 49 - </body> 50 - </html>); 51 // inject the doctype so we're not in quirks mode 52 return html`<!DOCTYPE html> 53 ${layout}`;
··· 14 preloads?: PreloadRules[] 15 }; 16 17 + export const BaseLayout = (props: BaseLayoutProps) => { 18 + const noIndex = (props.noIndex !== undefined) ? props.noIndex : false; 19 + const mainClass = (props.mainClass !== undefined) ? props.mainClass : ""; 20 + const preloads = (props.preloads !== undefined) ? props.preloads : []; 21 + 22 const layout = ( 23 + <html data-theme="dark" lang="en"> 24 + <head> 25 + <meta charset="UTF-8" /> 26 + <title>{APP_NAME} - {props.title}</title> 27 + {noIndex ? <meta name="robots" content="noindex" /> : null} 28 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 29 + <link rel="icon" type="image/png" href="/favicon.png" /> 30 + <link rel="preload" href="/logo.svg" as="image" type="image/svg+xml" /> 31 + <link rel="preload" href="/dep/htmx.min.js" as="script" /> 32 + <link rel="preload" href="/dep/toastify.js" as="script" /> 33 + <PreloadDependencyTags scripts={preloads} /> 34 35 + <link rel="stylesheet" type="text/css" href="/dep/toastify.min.css" /> 36 + <script type="text/javascript" src="/dep/htmx.min.js"></script> 37 + <script type="text/javascript" src="/dep/toastify.js"></script> 38 + <link rel="stylesheet" href="/dep/pico.min.css" /> 39 + <link rel="stylesheet" href="/css/stylesheet.min.css" /> 40 + <script type="text/javascript" src={mainScriptStr}></script> 41 + <MetaTags /> 42 + </head> 43 + <body> 44 + <container class="pico"> 45 + <main class={mainClass}> 46 + {props.children} 47 + </main> 48 + </container> 49 + </body> 50 + </html> 51 + ); 52 + 53 // inject the doctype so we're not in quirks mode 54 return html`<!DOCTYPE html> 55 ${layout}`;
+1 -1
src/pages/dashboard.tsx
··· 40 <article> 41 <header> 42 <div class="logoBox"> 43 - <LogoImage /> 44 <h4>{APP_NAME} Dashboard</h4> 45 </div> 46 <div class="sidebar-block">
··· 40 <article> 41 <header> 42 <div class="logoBox"> 43 + <LogoImage width={64} height={64} /> 44 <h4>{APP_NAME} Dashboard</h4> 45 </div> 46 <div class="sidebar-block">
+2 -1
src/pages/homepage.tsx
··· 29 width="1200px" 30 /> 31 <figcaption> 32 - An amazing picture of {APP_NAME}'s Dashboard, wow! 33 </figcaption> 34 </figure> 35 </center> 36 <h6 class="inline-header">Features:</h6> 37 <ul> 38 <li>Handles multiple users/accounts easily, supports most PDS instances</li>
··· 29 width="1200px" 30 /> 31 <figcaption> 32 + {APP_NAME} is full of features to help wrangle your social media. 33 </figcaption> 34 </figure> 35 </center> 36 + <hr /> 37 <h6 class="inline-header">Features:</h6> 38 <ul> 39 <li>Handles multiple users/accounts easily, supports most PDS instances</li>