diff --git a/.cursor/docs/design-system.md b/.cursor/docs/design-system.md index 23a9f9b99..98e03a3f9 100644 --- a/.cursor/docs/design-system.md +++ b/.cursor/docs/design-system.md @@ -205,7 +205,7 @@ tier to win a stacking fight (fix the portal / stacking context instead). | active / selected (toolbar + rows) | **`is-active` pattern**: `color-mix(primary 10%)` bg + `text-primary` (`_toolbar.scss`); TOC **`menu-active`**: opaque soft brand (`--menu-active-bg` = `color-mix(primary 14%, var(--pad-well))`, `--menu-active-fg` = `primary`, scoped to `.toc__list.menu` in `_daisyui.scss` — never `transparent` mix, never charcoal `neutral`); **`menu-focus`** stays `base-300` (scroll-spy only); nav items: `variant="primary"` | | context-menu-active | `color-mix(primary 15%)` on TOC rows, `8%` on message cards — row keeps highlight while its menu is open | | unread | `UnreadBadge` (`bg-error text-error-content rounded-full`) + `animate-badge-entry` + `RollingNumber`; count via `resolveUnreadCount` (`utils/unreadDisplay.ts`). TOC/header React-only; ProseMirror `.ha-chat-btn` widgets via `syncHeadingWidgetUnread` + `[data-unread-count]` CSS | -| pending / failed (messages) | pending = `Timestamp` pending clock (`text-base-content/40`), no dim and no motion; failed = `Timestamp` alert (`text-error`) + `MessageCard.FailedRow` with `error` ink | +| pending / failed (messages) | pending dim + `msg-send-in` rise; failed = `MessageCard.FailedRow` with `error` ink | | flash (deep-link jump) | `msg_card--flash` primary color-mix pulses (`globals.scss`), PRM-static fallback | | drag | ghosted: dashed `base-300` border + `opacity-60`; source: `base-content 40%` border; TOC list-drag hides trails | | disabled | `/40` ink, `cursor-not-allowed`, no hover response | @@ -225,8 +225,8 @@ tier to win a stacking fight (fix the portal / stacking context instead). - **Native `