From 93d1e3383ce47e45157d70f9ba6251239dae6bc2 Mon Sep 17 00:00:00 2001 From: Maze <167211895+mazeincoding@users.noreply.github.com> Date: Mon, 23 Feb 2026 03:24:02 +0100 Subject: feat: major editor overhaul (assets, properties, timeline, fonts) (#709) * feat: major editor overhaul (assets, properties, timeline, fonts) Refactor editor core systems to standardize UI architecture and improve performance. Assets & Properties: - Replace monolithic property items with composable `Section` architecture. - Add specialized sections for Transform, Blending, and Text. - Implement `NumberField` with scrubbing and math evaluation. - Add new ColorPicker with EyeDropper and multiple format support. - Standardize asset panels using new `PanelView` layout. Fonts & Stickers: - Implement custom font atlas/sprite system for high-performance previews. - Add virtualized FontPicker with search and favorites. - Refactor stickers to use a provider-based architecture (icons, emoji, flags, shapes). - Standardize sticker IDs to `provider:value` format. Timeline & Interaction: - Convert bookmarks to rich objects with notes, colors, and duration. - Refactor drag-and-drop to use Command pattern (enabling proper undo/redo). - Add Shift modifier to disable snapping during moves/resizes. - Add new overlays for layout guides and text editing. Renderer: - Add support for multi-line text, custom line-height, and letter-spacing. - Implement global composite operation (blend modes). - Update sticker node to resolve dynamic provider IDs. Infrastructure: - Add storage migrations (v3->v6) for text weights, sticker IDs, and bookmarks. - Update global styles and core UI components (Button, Input, Popover). * add ts-nocheck directive to settings-legacy.tsx to suppress TypeScript errors * fix: correct global composite operation assignment in TextNode to ensure proper blend mode handling * deleted shadcn components with errors * formatting * fix linter issues * migrate from next middleware to proxy * add missing component back * add breadcrumb back * chore: add @radix-ui/react-primitive deps * chore: more deps * chore: add missing env vars to bun-ci * next env --- apps/web/src/components/ui/alert.tsx | 11 +- apps/web/src/components/ui/avatar.tsx | 8 +- apps/web/src/components/ui/breadcrumb.tsx | 159 +++--- apps/web/src/components/ui/button.tsx | 24 +- apps/web/src/components/ui/calendar.tsx | 4 +- apps/web/src/components/ui/carousel.tsx | 262 --------- apps/web/src/components/ui/chart.tsx | 370 ------------- apps/web/src/components/ui/color-picker.tsx | 478 +++++++++------- apps/web/src/components/ui/command.tsx | 152 ------ apps/web/src/components/ui/context-menu.tsx | 179 +++--- apps/web/src/components/ui/drawer.tsx | 118 ---- apps/web/src/components/ui/dropdown-menu.tsx | 68 ++- apps/web/src/components/ui/font-picker.tsx | 317 ++++++++++- apps/web/src/components/ui/input-otp.tsx | 75 --- apps/web/src/components/ui/input-with-back.tsx | 173 +++--- apps/web/src/components/ui/input.tsx | 15 +- apps/web/src/components/ui/number-field.tsx | 169 ++++++ apps/web/src/components/ui/pagination.tsx | 117 ---- apps/web/src/components/ui/phone-input.tsx | 167 ------ apps/web/src/components/ui/popover.tsx | 6 +- apps/web/src/components/ui/prose.tsx | 91 +++- apps/web/src/components/ui/select.tsx | 70 ++- apps/web/src/components/ui/sidebar.tsx | 725 ------------------------- apps/web/src/components/ui/spinner.tsx | 20 +- apps/web/src/components/ui/split-button.tsx | 180 +++--- apps/web/src/components/ui/textarea.tsx | 4 +- apps/web/src/components/ui/tooltip.tsx | 1 + 27 files changed, 1364 insertions(+), 2599 deletions(-) delete mode 100644 apps/web/src/components/ui/carousel.tsx delete mode 100644 apps/web/src/components/ui/chart.tsx delete mode 100644 apps/web/src/components/ui/command.tsx delete mode 100644 apps/web/src/components/ui/drawer.tsx delete mode 100644 apps/web/src/components/ui/input-otp.tsx create mode 100644 apps/web/src/components/ui/number-field.tsx delete mode 100644 apps/web/src/components/ui/pagination.tsx delete mode 100644 apps/web/src/components/ui/phone-input.tsx delete mode 100644 apps/web/src/components/ui/sidebar.tsx (limited to 'apps/web/src/components/ui') diff --git a/apps/web/src/components/ui/alert.tsx b/apps/web/src/components/ui/alert.tsx index e941ca43..dcc190d3 100644 --- a/apps/web/src/components/ui/alert.tsx +++ b/apps/web/src/components/ui/alert.tsx @@ -1,6 +1,5 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { AlertTriangle } from "lucide-react"; import { cn } from "@/utils/ui"; import { HugeiconsIcon } from "@hugeicons/react"; import { Alert02Icon } from "@hugeicons/core-free-icons"; @@ -32,7 +31,10 @@ const Alert = React.forwardRef< {...props} > {variant === "destructive" && ( - + )} {children} @@ -45,7 +47,10 @@ const AlertTitle = React.forwardRef< >(({ className, ...props }, ref) => (
)); diff --git a/apps/web/src/components/ui/avatar.tsx b/apps/web/src/components/ui/avatar.tsx index 0c2fb4c4..a3b59233 100644 --- a/apps/web/src/components/ui/avatar.tsx +++ b/apps/web/src/components/ui/avatar.tsx @@ -38,10 +38,10 @@ const AvatarFallback = React.forwardRef< >(({ className, ...props }, ref) => ( )); diff --git a/apps/web/src/components/ui/breadcrumb.tsx b/apps/web/src/components/ui/breadcrumb.tsx index e95f2965..927cca89 100644 --- a/apps/web/src/components/ui/breadcrumb.tsx +++ b/apps/web/src/components/ui/breadcrumb.tsx @@ -1,108 +1,99 @@ -import * as React from "react"; -import { Slot as SlotPrimitive } from "radix-ui"; import { ChevronRight, MoreHorizontal } from "lucide-react"; +import { Slot } from "radix-ui"; import { cn } from "@/utils/ui"; -const Breadcrumb = React.forwardRef< - HTMLElement, - React.ComponentPropsWithoutRef<"nav"> & { - separator?: React.ReactNode; - } ->(({ ...props }, ref) =>