atmosphere explorer
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

kawaii mode

Juliet 4a3681d5 9d2c1dd6

+38 -4
public/bluetan.png

This is a binary file and will not be displayed.

+18
src/components/settings.tsx
··· 18 18 localStorage.backlinks === "true", 19 19 ); 20 20 export const [hideMedia, setHideMedia] = createSignal(localStorage.hideMedia === "true"); 21 + export const [kawaii, setKawaii] = createSignal(localStorage.kawaii === "true"); 21 22 22 23 const Settings = () => { 23 24 const [modal, setModal] = createSignal<HTMLDialogElement>(); ··· 203 204 Hide media embeds 204 205 </label> 205 206 </div> 207 + <Show when={localStorage.kawaii}> 208 + <div class="flex items-center gap-1"> 209 + <input 210 + id="enableKawaii" 211 + class="size-4" 212 + type="checkbox" 213 + checked={localStorage.kawaii === "true"} 214 + onChange={(e) => { 215 + localStorage.kawaii = e.currentTarget.checked; 216 + setKawaii(e.currentTarget.checked); 217 + }} 218 + /> 219 + <label for="enableKawaii" class="select-none"> 220 + Enable kawaii mode 221 + </label> 222 + </div> 223 + </Show> 206 224 </div> 207 225 </div> 208 226 </div>
+20 -4
src/layout.tsx
··· 1 1 import { createEffect, ErrorBoundary, onMount, Show, Suspense } from "solid-js"; 2 - import { A, RouteSectionProps, useLocation, useParams } from "@solidjs/router"; 2 + import { A, RouteSectionProps, useLocation, useParams, useSearchParams } from "@solidjs/router"; 3 3 import { agent, loginState, retrieveSession } from "./components/login.jsx"; 4 4 import { RecordEditor } from "./components/create.jsx"; 5 5 import Tooltip from "./components/tooltip.jsx"; ··· 8 8 import { AccountManager } from "./components/account.jsx"; 9 9 import { resolveHandle } from "./utils/api.js"; 10 10 import { Meta, MetaProvider } from "@solidjs/meta"; 11 - import { Settings } from "./components/settings.jsx"; 11 + import { kawaii, Settings } from "./components/settings.jsx"; 12 12 import { Handle } from "@atcute/lexicons"; 13 13 import { copyNotice } from "./utils/copy.js"; 14 14 ··· 24 24 } 25 25 const params = useParams(); 26 26 const location = useLocation(); 27 + 27 28 onMount(async () => { 28 29 await retrieveSession(); 29 30 if (loginState() && location.pathname === "/") window.location.href = `/at://${agent.sub}`; 31 + if (location.search.includes("kawaii=true")) { 32 + localStorage.kawaii = "true"; 33 + } 30 34 }); 31 35 32 36 createEffect(async () => { ··· 52 56 </A> 53 57 <AccountManager /> 54 58 </div> 55 - <div class="basis-1/3 text-center font-mono text-lg font-bold"> 59 + <div class="flex basis-1/3 justify-center text-center font-mono text-lg font-bold"> 56 60 <A href="/" class="hover:underline"> 57 61 PDSls 58 62 </A> 63 + <Show when={location.search.includes("kawaii=true") || kawaii()}> 64 + <a 65 + href="https://bsky.app/profile/ninikyuu.bsky.social/post/3l3tq5xwqf22o" 66 + target="_blank" 67 + > 68 + <img 69 + src="/bluetan.png" 70 + title="Art by nico ღ (ninikyuu.bsky.social)" 71 + class="w-50px sm:w-150px md:w-200px lg:w-250px absolute z-0 sm:fixed sm:bottom-4 sm:left-0" 72 + /> 73 + </a> 74 + </Show> 59 75 </div> 60 76 <div class="justify-right flex basis-1/3 items-center gap-x-2"> 61 77 <Show when={loginState()}> ··· 64 80 <Settings /> 65 81 </div> 66 82 </div> 67 - <div class="min-w-21rem sm:min-w-23rem mb-5 flex max-w-full flex-col items-center text-pretty md:max-w-screen-md"> 83 + <div class="min-w-21rem sm:min-w-23rem z-1 dark:bg-dark-800 mb-5 flex max-w-full flex-col items-center text-pretty bg-zinc-100 md:max-w-screen-md"> 68 84 <Show when={location.pathname !== "/jetstream" && location.pathname !== "/firehose"}> 69 85 <Search /> 70 86 </Show>