any
This commit is contained in:
parent
47d379e77f
commit
5b2a2fc104
|
|
@ -240,6 +240,9 @@
|
|||
- empty-state не должен использовать декоративную серую подложку под SVG; media-box прозрачный, SVG выравнивается через `display:flex` и центрирование
|
||||
- detail-toolbar в карточке запроса использует общий glass-cluster для листания `prev/next`, а сами кнопки внутри кластера — круглые, без квадратной подложки
|
||||
- `Добавить запрос` в header `Внешних контуров` — это filled accent CTA с тёмным текстом, каноничным радиусом и hover в более светлый тон того же акцента
|
||||
- global sidebar quick action `Новый рабочий элемент` не показывается на маршруте `external-contours`, потому что этот экран уже имеет собственный primary CTA в header
|
||||
- active/passive карточки `Внешних контуров` обязаны брать фон только из `--nodedc-card-active-rgb` и `--nodedc-card-passive-rgb`
|
||||
- header `Внешних контуров` и detail-pane опускаются на единый верхний ритм; нельзя прижимать breadcrumbs, CTA и detail-header к верхней кромке
|
||||
- popup выбора `Приоритет / Метки` внутри detail view не рендерится inline в property-row; он обязан уходить в `portal`
|
||||
- секции с dropdown-trigger внутри blur/glass shell обязаны иметь `overflow: visible` и `isolation: isolate`, иначе popup визуально “тонет” внутри блока
|
||||
- при переключении `Открытые / Закрытые` store обязан очистить stale request list до нового fetch, чтобы пользователь не видел flash старой верстки
|
||||
|
|
@ -254,6 +257,12 @@
|
|||
<Button className="nodedc-external-primary-button">...</Button>
|
||||
```
|
||||
|
||||
- Route-aware quick action hide:
|
||||
```tsx
|
||||
const pathname = usePathname();
|
||||
if (pathname?.includes("/external-contours")) return null;
|
||||
```
|
||||
|
||||
- List spacing:
|
||||
```tsx
|
||||
<div key={resolvedTab} className="space-y-3">
|
||||
|
|
@ -271,6 +280,18 @@ const resolvedTab = pendingTab ?? routeTab;
|
|||
const isTabTransitioning = loader === "init-loading" || pendingTab !== null || routeTab !== currentTab;
|
||||
```
|
||||
|
||||
- Card theme source:
|
||||
```css
|
||||
.nodedc-external-card {
|
||||
background: rgb(var(--nodedc-card-passive-rgb));
|
||||
}
|
||||
|
||||
.nodedc-external-card[data-active="true"] {
|
||||
background: rgb(var(--nodedc-card-active-rgb));
|
||||
color: #0b1117;
|
||||
}
|
||||
```
|
||||
|
||||
- Property popup anchor:
|
||||
```tsx
|
||||
<PriorityDropdown
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ export const ExternalContoursRoot = observer(function ExternalContoursRoot(props
|
|||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="flex h-full w-full overflow-hidden bg-surface-1">
|
||||
<div className="flex h-full w-full overflow-hidden bg-surface-1 pt-2">
|
||||
<div
|
||||
className={cn(
|
||||
"absolute top-[50px] bottom-0 z-10 w-full flex-shrink-0 bg-surface-1 transition-all lg:!relative lg:!top-0 lg:w-2/6",
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@ export function AuthHeaderBase(props: TAuthHeaderBase) {
|
|||
<div className="sticky top-0 flex w-full flex-shrink-0 items-center justify-between gap-6 px-2 py-1">
|
||||
<Link href="/">
|
||||
<PlaneLockup
|
||||
height={84}
|
||||
width={402}
|
||||
height={31}
|
||||
width={148}
|
||||
className="nodedc-auth-logo-lockup text-primary transition-opacity hover:opacity-90"
|
||||
/>
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
import { useRef, useState } from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { useParams } from "next/navigation";
|
||||
import { useParams, usePathname } from "next/navigation";
|
||||
// plane imports
|
||||
import { EUserPermissions, EUserPermissionsLevel, SIDEBAR_TRACKER_ELEMENTS } from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
|
|
@ -31,6 +31,7 @@ export const SidebarQuickActions = observer(function SidebarQuickActions() {
|
|||
const timeoutRef = useRef<any>();
|
||||
// router
|
||||
const { workspaceSlug: routerWorkspaceSlug } = useParams();
|
||||
const pathname = usePathname();
|
||||
const workspaceSlug = routerWorkspaceSlug?.toString();
|
||||
// store hooks
|
||||
const { toggleCreateIssueModal } = useCommandPalette();
|
||||
|
|
@ -45,6 +46,9 @@ export const SidebarQuickActions = observer(function SidebarQuickActions() {
|
|||
);
|
||||
const disabled = joinedProjectIds.length === 0 || !canCreateIssue;
|
||||
const workspaceDraftIssue = workspaceSlug ? (storedValue?.[workspaceSlug] ?? undefined) : undefined;
|
||||
const effectivePathname =
|
||||
pathname || (typeof window !== "undefined" ? window.location.pathname : undefined);
|
||||
const isExternalContoursRoute = effectivePathname?.includes("/external-contours");
|
||||
|
||||
const handleMouseEnter = () => {
|
||||
// if enter before time out clear the timeout
|
||||
|
|
@ -67,6 +71,8 @@ export const SidebarQuickActions = observer(function SidebarQuickActions() {
|
|||
return Promise.resolve();
|
||||
};
|
||||
|
||||
if (isExternalContoursRoute) return null;
|
||||
|
||||
return (
|
||||
<>
|
||||
<CreateUpdateIssueModal
|
||||
|
|
|
|||
|
|
@ -810,9 +810,7 @@
|
|||
max-width: 32rem;
|
||||
border: 0 !important;
|
||||
outline: none !important;
|
||||
box-shadow:
|
||||
0 24px 64px rgba(0, 0, 0, 0.34),
|
||||
0 8px 20px rgba(0, 0, 0, 0.18) !important;
|
||||
box-shadow: none !important;
|
||||
border-radius: 1.9rem !important;
|
||||
padding: 2.2rem !important;
|
||||
background:
|
||||
|
|
@ -1016,12 +1014,23 @@
|
|||
.nodedc-external-card[data-active="true"] {
|
||||
background:
|
||||
linear-gradient(180deg, rgba(255, 255, 255, 0.024) 0%, rgba(255, 255, 255, 0.008) 100%),
|
||||
rgba(255, 255, 255, 0.035) !important;
|
||||
rgb(var(--nodedc-card-active-rgb)) !important;
|
||||
color: #0b1117 !important;
|
||||
box-shadow:
|
||||
inset 0 0 0 1px rgba(var(--nodedc-accent-rgb), 0.32),
|
||||
0 12px 32px rgba(0, 0, 0, 0.16) !important;
|
||||
}
|
||||
|
||||
.nodedc-external-card[data-active="true"] .text-primary {
|
||||
color: #0b1117 !important;
|
||||
}
|
||||
|
||||
.nodedc-external-card[data-active="true"] .text-secondary,
|
||||
.nodedc-external-card[data-active="true"] .text-tertiary,
|
||||
.nodedc-external-card[data-active="true"] .text-placeholder {
|
||||
color: rgba(11, 17, 23, 0.72) !important;
|
||||
}
|
||||
|
||||
.nodedc-external-content-shell {
|
||||
border: 0 !important;
|
||||
outline: none !important;
|
||||
|
|
|
|||
Loading…
Reference in New Issue