a homebrewed DnD campaign based in the Honkai: Star Rail universe
hsr honkaistarrail dnd
1
fork

Configure Feed

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

chore/cleanup stuff

+91 -37
+3
.gitignore
··· 26 26 27 27 *storybook.log 28 28 storybook-static 29 + 30 + # scc 31 + .sccignore
-27
.oxfmtrc.json
··· 1 - { 2 - "$schema": "./node_modules/oxfmt/configuration_schema.json", 3 - "useTabs": true, 4 - "semi": false, 5 - "singleQuote": true, 6 - "trailingComma": "all", 7 - "ignorePatterns": ["app/src/app.html", "app/src/styles/utilities.css"], 8 - "sortTailwindcss": { 9 - "stylesheet": "./app/src/styles/app.css", 10 - "attributes": ["class", "className"], 11 - "functions": ["clsx", "cn", "tv"], 12 - "preserveDuplicates": false, 13 - "preserveWhitespace": false 14 - }, 15 - "sortImports": { 16 - "newlinesBetween": false, 17 - "groups": [ 18 - "type-import", 19 - ["value-builtin", "value-external"], 20 - "type-internal", 21 - "value-internal", 22 - ["type-parent", "type-sibling", "type-index"], 23 - ["value-parent", "value-sibling", "value-index"], 24 - "unknown" 25 - ] 26 - } 27 - }
+8 -8
app/src/app.html
··· 3 3 <head> 4 4 <meta charset="utf-8" /> 5 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 - <link rel="icon" href="%sveltekit.assets%/favicons/favicon.svg" /> 7 - <link rel="icon" href="%sveltekit.assets%/favicons/favicon.ico" /> 6 + <link rel="icon" href="%sveltekit.assets%/favicon.svg" /> 7 + <link rel="icon" href="%sveltekit.assets%/favicon.ico" /> 8 8 <link rel="prefetch" type="font/otf" as="font" href="%sveltekit.assets%/fonts/Hsr-Universal-Script.otf" /> 9 - <link type="image/png" sizes="16x16" rel="icon" href="%sveltekit.assets%/favicons/favicon-16x16.png" /> 10 - <link type="image/png" sizes="32x32" rel="icon" href="%sveltekit.assets%/favicons/favicon-32x32.png" /> 11 - <link type="image/png" sizes="192x192" rel="icon" href="%sveltekit.assets%/favicons/android-chrome-192x192.png" /> 12 - <link type="image/png" sizes="512x512" rel="icon" href="%sveltekit.assets%/favicons/android-chrome-512x512.png" /> 13 - <link type="image/png" sizes="180x180" rel="apple-touch-icon" href="%sveltekit.assets%/favicons/apple-touch-icon.png" /> 14 - <link type="image/png" sizes="180x180" rel="apple-touch-icon-precomposed" href="%sveltekit.assets%/favicons/apple-touch-icon-precomposed.png" /> 9 + <link type="image/png" sizes="16x16" rel="icon" href="%sveltekit.assets%/favicon-16x16.png" /> 10 + <link type="image/png" sizes="32x32" rel="icon" href="%sveltekit.assets%/favicon-32x32.png" /> 11 + <link type="image/png" sizes="192x192" rel="icon" href="%sveltekit.assets%/android-chrome-192x192.png" /> 12 + <link type="image/png" sizes="512x512" rel="icon" href="%sveltekit.assets%/android-chrome-512x512.png" /> 13 + <link type="image/png" sizes="180x180" rel="apple-touch-icon" href="%sveltekit.assets%/apple-touch-icon.png" /> 14 + <link type="image/png" sizes="180x180" rel="apple-touch-icon-precomposed" href="%sveltekit.assets%/apple-touch-icon-precomposed.png" /> 15 15 %sveltekit.head% 16 16 </head> 17 17 <body data-sveltekit-preload-data="hover">
+48
app/src/lib/ui-patterns/empty-state/EmptyState.svelte
··· 1 + <script lang="ts"> 2 + import SearchAlert from '@lucide/svelte/icons/search-alert' 3 + import type { Snippet } from 'svelte' 4 + import type { SvelteHTMLElements } from 'svelte/elements' 5 + import { cn, tv } from 'tailwind-variants' 6 + import { LinkButton } from '$ui/button' 7 + 8 + type EmptyViewProps = SvelteHTMLElements['div'] & { 9 + icon?: Snippet, 10 + heading: string, 11 + subHeading: string, 12 + body: Snippet, 13 + } 14 + let { 15 + icon, 16 + heading, 17 + subHeading, 18 + body, 19 + class: className, 20 + ...restProps 21 + }: EmptyViewProps = $props() 22 + 23 + const emptyViewTv = tv({ 24 + base: ['m-auto', 'flex flex-col gap-2 items-center'], 25 + }) 26 + </script> 27 + 28 + <div class="m-auto"> 29 + <div> 30 + {#if icon === undefined} 31 + <SearchAlert /> 32 + {:else} 33 + {@render icon()} 34 + {/if} 35 + </div> 36 + <div class="flex flex-col gap-8 -my-16"> 37 + <div class="flex flex-col gap-4"> 38 + <hgroup> 39 + <p class="text-xs font-mono uppercase text-zinc-500">{subHeading}</p> 40 + <h2 class="text-2xl font-mono uppercase">{heading}</h2> 41 + </hgroup> 42 + <p class="max-w-50ch italic text-pretty">{@render body()}</p> 43 + </div> 44 + </div> 45 + <footer> 46 + <LinkButton intent="primary" href="/" class="self-end">Go back home</LinkButton> 47 + </footer> 48 + </div>
+1
app/src/lib/ui-patterns/empty-state/index.ts
··· 1 + export { default as EmptyState } from './EmptyState.svelte'
+1 -1
app/src/routes/+error.svelte
··· 3 3 import { LinkButton } from '$ui/button' 4 4 </script> 5 5 6 - <div class="mx-auto my-auto"> 6 + <div class="m-auto"> 7 7 <div class="flex flex-col gap-8 -my-16"> 8 8 <div class="flex flex-col gap-4"> 9 9 <hgroup>
+1 -1
app/src/routes/users/[username]/+page.svelte
··· 18 18 </svelte:head> 19 19 20 20 <PageLayout display="flex" direction="col"> 21 - {#if user === undefined} 21 + {#if user === null} 22 22 No user found by {params.username} 23 23 {:else} 24 24 {@const username = user.username}
app/static/favicons/android-chrome-192x192.png app/static/android-chrome-192x192.png
app/static/favicons/android-chrome-512x512.png app/static/android-chrome-512x512.png
app/static/favicons/apple-touch-icon-precomposed.png app/static/apple-touch-icon-precomposed.png
app/static/favicons/apple-touch-icon.png app/static/apple-touch-icon.png
app/static/favicons/favicon-16x16.png app/static/favicon-16x16.png
app/static/favicons/favicon-32x32.png app/static/favicon-32x32.png
app/static/favicons/favicon.ico app/static/favicon.ico
app/static/favicons/favicon.svg app/static/favicon.svg
+29
oxfmt.config.ts
··· 1 + import { defineConfig } from 'oxfmt' 2 + 3 + export default defineConfig({ 4 + $schema: './node_modules/oxfmt/configuration_schema.json', 5 + useTabs: true, 6 + semi: false, 7 + singleQuote: true, 8 + trailingComma: 'all', 9 + ignorePatterns: ['app/src/app.html', 'app/src/styles/utilities.css'], 10 + sortTailwindcss: { 11 + stylesheet: './app/src/styles/app.css', 12 + attributes: ['class', 'className'], 13 + functions: ['clsx', 'cn', 'tv'], 14 + preserveDuplicates: false, 15 + preserveWhitespace: false, 16 + }, 17 + sortImports: { 18 + newlinesBetween: false, 19 + groups: [ 20 + 'type-import', 21 + ['value-builtin', 'value-external'], 22 + 'type-internal', 23 + 'value-internal', 24 + ['type-parent', 'type-sibling', 'type-index'], 25 + ['value-parent', 'value-sibling', 'value-index'], 26 + 'unknown', 27 + ], 28 + }, 29 + })