From 3edaed9327e31478d453691973024493ac7a8c3b Mon Sep 17 00:00:00 2001 From: cannorin Date: Wed, 24 Sep 2025 20:22:19 +0900 Subject: [PATCH] kripke: add stats --- apps/web/package.json | 8 +- .../lib/components/ui/button/button.svelte | 2 +- apps/web/src/routes/kripke/+page.svelte | 110 +--- .../src/routes/kripke/components/chart.svelte | 63 ++ .../src/routes/kripke/components/share.svelte | 11 +- .../routes/kripke/components/template.svelte | 172 ++++++ .../routes/kripke/random/[seed]/+page.svelte | 113 +--- apps/web/tailwind.config.ts | 6 +- yarn.lock | 543 +++++++++++++++++- 9 files changed, 842 insertions(+), 186 deletions(-) create mode 100644 apps/web/src/routes/kripke/components/chart.svelte create mode 100644 apps/web/src/routes/kripke/components/template.svelte diff --git a/apps/web/package.json b/apps/web/package.json index 5f2957e..67542b6 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,6 +20,9 @@ "@sveltejs/enhanced-img": "0.4.4", "@sveltejs/kit": "2.20.7", "@sveltejs/vite-plugin-svelte": "6.2.0", + "@types/d3-array": "^3", + "@types/d3-scale": "^4", + "@types/d3-shape": "^3", "@types/prismjs": "1.26.5", "autoprefixer": "10.4.20", "bits-ui": "1.3.3", @@ -49,10 +52,13 @@ "@fontsource/zen-kaku-gothic-new": "5.2.5", "@icons-pack/svelte-simple-icons": "6.4.0", "@tailwindcss/typography": "0.5.16", + "d3-scale": "4.0.2", "deepmerge": "4.3.1", + "layerchart": "1.0.12", "lucide-svelte": "0.475.0", "svelte-persisted-store": "0.12.0", "sveltekit-rate-limiter": "0.7.0", - "tailwind-merge": "3.0.2" + "tailwind-merge": "3.0.2", + "zod": "4.1.11" } } diff --git a/apps/web/src/lib/components/ui/button/button.svelte b/apps/web/src/lib/components/ui/button/button.svelte index 37a5298..2c022e4 100644 --- a/apps/web/src/lib/components/ui/button/button.svelte +++ b/apps/web/src/lib/components/ui/button/button.svelte @@ -23,7 +23,7 @@ export const buttonVariants = tv({ link: "text-primary underline-offset-4 hover:underline", }, size: { - default: "h-9 px-4 py-2", + default: "h-9 px-4 py-2 pb-2.5", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", icon: "h-9 w-9", diff --git a/apps/web/src/routes/kripke/+page.svelte b/apps/web/src/routes/kripke/+page.svelte index d34ef00..fa6674c 100644 --- a/apps/web/src/routes/kripke/+page.svelte +++ b/apps/web/src/routes/kripke/+page.svelte @@ -1,16 +1,7 @@ -
-

KRiPkE

+{#snippet title()} +

+ Daily Challenge: + {timeUntilNextGame.hours}:{timeUntilNextGame.minutes}:{timeUntilNextGame.seconds} until the next game. +

+{/snippet} -
-
-

- Daily Challenge: - {timeUntilNextGame.hours}:{timeUntilNextGame.minutes}:{timeUntilNextGame.seconds} until the next game. -

- { dialogOpen = true; }} /> -
+{#snippet description()} +

Daily Challenge!

+
    +
  • The answer of the game changes every day.
  • +
  • The progress of the game persists until the next day ({timeUntilNextGame.hours}:{timeUntilNextGame.minutes}:{timeUntilNextGame.seconds} from now).
  • +
  • You can also play Random Challenge.
  • +
+{/snippet} -
-

Daily Challenge!

-
    -
  • The answer of the game changes every day.
  • -
  • The progress of the game persists until the next day ({timeUntilNextGame.hours}:{timeUntilNextGame.minutes}:{timeUntilNextGame.seconds} from now).
  • -
  • You can also play Random Challenge.
  • -
- - -
-
-
- -{#if status !== "playing"} - {#await getAnswer() then answerId} - - - - - {#if status === "win"} - YOU WIN! - {:else if status === "lose"} - YOU LOSE! - {/if} - - - The answer was: - - - -
- id: {answerId}, seed: {seed} - -
- - -
- - - -
-
-
-
- {/await} -{/if} +