From 2e6ff7f84a861a2c38c95a0db967e98ee7648ea9 Mon Sep 17 00:00:00 2001 From: pasqualevitiello Date: Sun, 8 Nov 2026 10:40:00 +0100 Subject: [PATCH 1/2] feat(ui): add current Plotter animations to website pages --- apps/ui/app/not-found.tsx | 31 +- apps/ui/app/page.tsx | 39 +- apps/ui/app/particles/page.tsx | 54 +- apps/ui/app/particles/search-container.tsx | 12 +- apps/ui/app/particles/search-field.tsx | 2 +- apps/ui/components/blueprint-dimensions.tsx | 31 + apps/ui/components/blueprint-drawing.tsx | 18 + .../ui/components/blueprint-motion.module.css | 13 + apps/ui/components/blueprint-motion.tsx | 66 +++ apps/ui/components/not-found-blueprint.tsx | 101 ++++ apps/ui/components/not-found-motion.tsx | 13 + .../components/particles-assembly-content.tsx | 109 ++++ .../components/particles-assembly-drawing.tsx | 530 ++++++++++++++++++ .../components/particles-assembly-geometry.ts | 178 ++++++ apps/ui/components/particles-blueprint.tsx | 123 ++++ apps/ui/components/particles-motion.tsx | 13 + apps/ui/components/primitives-blueprint.tsx | 95 ++++ apps/ui/components/primitives-button.tsx | 51 ++ .../primitives-construction-motion.tsx | 72 +++ .../components/primitives-morph-details.tsx | 228 ++++++++ apps/ui/components/primitives-morph-style.ts | 8 + apps/ui/components/primitives-morph-timing.ts | 7 + .../primitives-morph-transitions.tsx | 152 +++++ apps/ui/components/primitives-morph.tsx | 341 +++++++++++ apps/ui/components/primitives-motion.tsx | 15 + apps/ui/components/primitives-slider.tsx | 104 ++++ apps/ui/components/primitives-switch.tsx | 114 ++++ 27 files changed, 2473 insertions(+), 47 deletions(-) create mode 100644 apps/ui/components/blueprint-dimensions.tsx create mode 100644 apps/ui/components/blueprint-drawing.tsx create mode 100644 apps/ui/components/blueprint-motion.module.css create mode 100644 apps/ui/components/blueprint-motion.tsx create mode 100644 apps/ui/components/not-found-blueprint.tsx create mode 100644 apps/ui/components/not-found-motion.tsx create mode 100644 apps/ui/components/particles-assembly-content.tsx create mode 100644 apps/ui/components/particles-assembly-drawing.tsx create mode 100644 apps/ui/components/particles-assembly-geometry.ts create mode 100644 apps/ui/components/particles-blueprint.tsx create mode 100644 apps/ui/components/particles-motion.tsx create mode 100644 apps/ui/components/primitives-blueprint.tsx create mode 100644 apps/ui/components/primitives-button.tsx create mode 100644 apps/ui/components/primitives-construction-motion.tsx create mode 100644 apps/ui/components/primitives-morph-details.tsx create mode 100644 apps/ui/components/primitives-morph-style.ts create mode 100644 apps/ui/components/primitives-morph-timing.ts create mode 100644 apps/ui/components/primitives-morph-transitions.tsx create mode 100644 apps/ui/components/primitives-morph.tsx create mode 100644 apps/ui/components/primitives-motion.tsx create mode 100644 apps/ui/components/primitives-slider.tsx create mode 100644 apps/ui/components/primitives-switch.tsx diff --git a/apps/ui/app/not-found.tsx b/apps/ui/app/not-found.tsx index 5dd71547a9..12aed3b72b 100644 --- a/apps/ui/app/not-found.tsx +++ b/apps/ui/app/not-found.tsx @@ -1,29 +1,37 @@ import { - PageHeader, PageHeaderDescription, PageHeaderHeading, } from "@coss/ui/shared/page-header"; +import { SiteFooter } from "@coss/ui/shared/site-footer"; import { RiArrowLeftLine } from "@remixicon/react"; import type { Metadata } from "next"; import Link from "next/link"; import { Button } from "@/registry/default/ui/button"; +import { NotFoundBlueprint } from "@/components/not-found-blueprint"; +import { NotFoundMotion } from "@/components/not-found-motion"; export const metadata: Metadata = { description: - "The page you're looking for doesn't exist or may have been moved.", + "The page you’re looking for doesn’t exist or may have been moved.", title: "Page Not Found", }; export default function NotFound() { return ( -
- - Page Not Found - - The page you're looking for doesn't exist or may have been - moved. + <> +
+
+ + + +
+ + Page Not Found + + + The page you’re looking for doesn’t exist or may have been moved. -
+
- -
+
+ + ); } diff --git a/apps/ui/app/page.tsx b/apps/ui/app/page.tsx index 4e706d5ba3..d045079857 100644 --- a/apps/ui/app/page.tsx +++ b/apps/ui/app/page.tsx @@ -1,5 +1,4 @@ import { - PageHeader, PageHeaderDescription, PageHeaderHeading, } from "@coss/ui/shared/page-header"; @@ -18,27 +17,40 @@ import { } from "@/registry/default/ui/card"; import { particles } from "@/registry/registry-particles"; import { getCategoryThumbnail } from "@/components/category-thumbnails"; +import { PrimitivesBlueprint } from "@/components/primitives-blueprint"; +import { PrimitivesMotion } from "@/components/primitives-motion"; import { categories } from "@/config/categories"; import { PAGES_NEW } from "@/lib/docs"; -const description = "Built for developers and AI."; +const description = + "Accessible React components we use to build Cal.com, powered by Base UI and styled with Tailwind CSS. Designed for developers and AI, with source code you can make your own."; const particleCount = particles.length; export const metadata: Metadata = { description, - title: "A new, modern UI component library built on top of Base UI - coss ui", + title: "A modern React UI component library – coss ui", }; export default function Page() { return ( <> -
- - - A new, modern UI component library built on top of Base UI. +
+
+ + A modern React UI component library. - {description} -
+ + Accessible React components we use to build{" "} + + Cal.com + + , powered by Base UI and styled with Tailwind CSS. Designed for + developers and AI, with source code you can make your own. + +
@@ -50,8 +62,13 @@ export default function Page() { Browse {particleCount} particles
- -
+
+
+ + + +
+