From 2bf6e0202866abfdd5af0e60aabf9e3343ed76f3 Mon Sep 17 00:00:00 2001 From: aXenDeveloper Date: Fri, 9 Oct 2026 20:42:29 +0200 Subject: [PATCH] feat: Add cat pet for vitnode brand --- apps/web/content/docs/brand/index.mdx | 34 + apps/web/content/docs/brand/meta.json | 7 + apps/web/content/docs/brand/pet.mdx | 110 +++ apps/web/content/docs/meta.json | 3 + apps/web/src/docs/examples/pet-states.tsx | 104 +++ apps/web/src/docs/examples/pet.tsx | 11 + apps/web/src/docs/page-header.tsx | 2 +- apps/web/src/docs/search-dialog.tsx | 11 +- apps/web/src/locales/site/en.json | 221 +++++- apps/web/src/locales/site/pl.json | 221 +++++- apps/web/src/proto/ai-unlimited/breakdown.tsx | 83 --- apps/web/src/proto/ai-unlimited/current.tsx | 18 - .../src/proto/ai-unlimited/daily-limits.tsx | 63 -- apps/web/src/proto/ai-unlimited/data.ts | 64 -- apps/web/src/proto/ai-unlimited/harness.tsx | 177 ----- apps/web/src/proto/ai-unlimited/shared.tsx | 21 - apps/web/src/proto/ai-unlimited/statement.tsx | 35 - apps/web/src/proto/ai-unlimited/stats.tsx | 60 -- apps/web/src/routeTree.gen.ts | 21 - .../src/routes/_main/proto/ai-unlimited.tsx | 8 - apps/web/src/routes/llms[.]txt.ts | 4 +- .../home/illustrations/hero-icon-field.tsx | 74 -- .../site/home/illustrations/hero-preview.tsx | 163 ----- .../site/home/illustrations/hero-strands.tsx | 69 -- .../hero-wall/content-screens.tsx | 362 +++++++++ .../home/illustrations/hero-wall/frames.tsx | 227 ++++++ .../illustrations/hero-wall/hero-wall.tsx | 107 +++ .../hero-wall/member-screens.tsx | 155 ++++ .../home/illustrations/hero-wall/parts.tsx | 125 ++++ .../hero-wall/people-screens.tsx | 316 ++++++++ .../hero-wall/system-screens.tsx | 320 ++++++++ apps/web/src/site/home/sections/hero.tsx | 18 +- .../web/src/site/home/use-pointer-parallax.ts | 34 - apps/web/src/site/home/use-scroll-progress.ts | 39 + apps/web/src/site/marketing/marketing.css | 83 --- apps/web/src/styles.css | 6 + .../vitnode/scripts/cli/builder/report.ts | 14 +- packages/vitnode/src/components/pet/export.ts | 80 ++ packages/vitnode/src/components/pet/parts.tsx | 320 ++++++++ .../vitnode/src/components/pet/pet.test.tsx | 56 ++ packages/vitnode/src/components/pet/pet.tsx | 40 + .../vitnode/src/components/pet/states.tsx | 687 ++++++++++++++++++ packages/vitnode/src/components/pet/styles.ts | 47 ++ .../src/components/ui/copy-button.test.tsx | 11 + .../vitnode/src/components/ui/copy-button.tsx | 8 +- .../src/views/error/error-content.test.tsx | 58 ++ .../vitnode/src/views/error/error-content.tsx | 91 ++- 47 files changed, 3761 insertions(+), 1027 deletions(-) create mode 100644 apps/web/content/docs/brand/index.mdx create mode 100644 apps/web/content/docs/brand/meta.json create mode 100644 apps/web/content/docs/brand/pet.mdx create mode 100644 apps/web/content/docs/meta.json create mode 100644 apps/web/src/docs/examples/pet-states.tsx create mode 100644 apps/web/src/docs/examples/pet.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/breakdown.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/current.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/daily-limits.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/data.ts delete mode 100644 apps/web/src/proto/ai-unlimited/harness.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/shared.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/statement.tsx delete mode 100644 apps/web/src/proto/ai-unlimited/stats.tsx delete mode 100644 apps/web/src/routes/_main/proto/ai-unlimited.tsx delete mode 100644 apps/web/src/site/home/illustrations/hero-icon-field.tsx delete mode 100644 apps/web/src/site/home/illustrations/hero-preview.tsx delete mode 100644 apps/web/src/site/home/illustrations/hero-strands.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/content-screens.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/frames.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/hero-wall.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/member-screens.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/parts.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/people-screens.tsx create mode 100644 apps/web/src/site/home/illustrations/hero-wall/system-screens.tsx delete mode 100644 apps/web/src/site/home/use-pointer-parallax.ts create mode 100644 apps/web/src/site/home/use-scroll-progress.ts create mode 100644 packages/vitnode/src/components/pet/export.ts create mode 100644 packages/vitnode/src/components/pet/parts.tsx create mode 100644 packages/vitnode/src/components/pet/pet.test.tsx create mode 100644 packages/vitnode/src/components/pet/pet.tsx create mode 100644 packages/vitnode/src/components/pet/states.tsx create mode 100644 packages/vitnode/src/components/pet/styles.ts create mode 100644 packages/vitnode/src/views/error/error-content.test.tsx diff --git a/apps/web/content/docs/brand/index.mdx b/apps/web/content/docs/brand/index.mdx new file mode 100644 index 0000000000..5d022519ed --- /dev/null +++ b/apps/web/content/docs/brand/index.mdx @@ -0,0 +1,34 @@ +--- +title: Introduction +description: The VitNode brand - Tabby the pet, the hexagon mark and the blue palette, ready to use in your community and plugins. +icon: Power +--- + +The Brand section collects what makes VitNode look like VitNode, so your +community, plugin or blog post can use it without guessing. Everything here +ships in `@vitnode/core` or downloads straight from the page. + + + +## What's here + +- **Tabby, the pet.** A striped hexagon cat with 14 states, from `hello` to + `dizzy`. Its body is the logo's hexagon and its colors are the logo's blues, + so it never looks off-brand next to the mark. +- **The palette.** Tabby and the logo use the same blues as the UI's primary + color, documented with every other token on the Colors page. + +## Related + + + + + diff --git a/apps/web/content/docs/brand/meta.json b/apps/web/content/docs/brand/meta.json new file mode 100644 index 0000000000..85abac1a80 --- /dev/null +++ b/apps/web/content/docs/brand/meta.json @@ -0,0 +1,7 @@ +{ + "title": "Brand", + "description": "VitNode's look and personality, starting with Tabby the pet", + "icon": "Sparkles", + "root": true, + "pages": ["index", "pet"] +} diff --git a/apps/web/content/docs/brand/pet.mdx b/apps/web/content/docs/brand/pet.mdx new file mode 100644 index 0000000000..d1512f0931 --- /dev/null +++ b/apps/web/content/docs/brand/pet.mdx @@ -0,0 +1,110 @@ +--- +title: Pet +description: Tabby, the VitNode pet - an animated SVG mascot with 14 states for welcome screens, loading, empty states and error pages, plus SVG and PNG downloads. +icon: Cat +--- + +Tabby is VitNode's pet: a striped hexagon cat that ships as one React component +with 14 states. Drop it into an empty state, a loading screen or an error page +and the page instantly feels less like a stack trace. + + + +## Use the pet + +Import `Pet` from core and pick a `state`. The pet scales to its box, so size it +with Tailwind classes. Keep roughly a 7:8 width-to-height ratio. + +```tsx title="welcome.tsx" +import { Pet } from '@vitnode/core/components/pet/pet' + +export const Welcome = () => +``` + +## States + + + +Every card has three buttons: + +- **Copy** puts the SVG markup on your clipboard, ready to paste into code or a + design tool. +- **SVG** downloads an animated file. The animation styles travel inside it, so + Tabby keeps moving wherever you open it. +- **PNG** downloads a still, 1024 px wide image with a transparent background. + +| State | Use it for | +| ----------- | ------------------------------ | +| `idle` | Default pose | +| `hello` | Onboarding and welcome screens | +| `coding` | Docs and developer pages | +| `coffee` | Breaks and quiet days | +| `love` | Thank-you screens | +| `music` | Media and playlists | +| `sleeping` | Idle or maintenance mode | +| `thinking` | Loading states | +| `celebrate` | Success and first publish | +| `searching` | Empty search results | +| `offline` | Lost connections | +| `oops` | 404 pages | +| `dizzy` | 500 errors | +| `building` | Maintenance and coming soon | + +## Error pages + +`ErrorContent` draws the status code in huge digits and lets Tabby stand in for +the middle one: a 404 shows `oops` between the two 4s, and a 500 shows `dizzy` +between the 5 and the 0. The built-in pages need no extra code. Other codes, such +as 403, keep all three digits and skip the pet. Screen readers hear the code and +title together, not the decorative digits. + +## Props + +import { TypeTable } from 'fumadocs-ui/components/type-table' + +