diff --git a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx index 6332135..7add1bb 100644 --- a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx +++ b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx @@ -74,20 +74,20 @@ function AnalyticsPage({ params }: Route.ComponentProps) { {workspaceProjectIds.length > 0 || loader === "init-loader" ? (
-
+
- + {ANALYTICS_TABS.map((tab) => ( { if (!tab.isDisabled) { handleTabChange(tab.key); @@ -107,7 +107,7 @@ function AnalyticsPage({ params }: Route.ComponentProps) { diff --git a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx index 300fbce..f9c3308 100644 --- a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx +++ b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/drafts/page.tsx @@ -17,7 +17,9 @@ function WorkspaceDraftPage({ params }: Route.ComponentProps) { <>
- +
+ +
); diff --git a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx index d925b2c..faad243 100644 --- a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx +++ b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/stickies/page.tsx @@ -13,7 +13,9 @@ export default function WorkspaceStickiesPage() { <>
- +
+ +
); diff --git a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx index 0c6ebe3..d3027e1 100644 --- a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx +++ b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/header.tsx @@ -15,13 +15,13 @@ import { DEFAULT_GLOBAL_VIEWS_LIST, } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; -import { Button } from "@plane/propel/button"; import { ViewsIcon } from "@plane/propel/icons"; import type { IIssueDisplayFilterOptions, IIssueDisplayProperties, ICustomSearchSelectOption } from "@plane/types"; import { EIssuesStoreType, EIssueLayoutTypes } from "@plane/types"; import { Breadcrumbs, Header, BreadcrumbNavigationSearchDropdown } from "@plane/ui"; // components import { BreadcrumbLink } from "@/components/common/breadcrumb-link"; +import { AppHeaderPrimaryActionButton } from "@/components/core/app-header/primary-action-button"; import { SwitcherLabel } from "@/components/common/switcher-label"; import { DisplayFiltersSelection, FiltersDropdown } from "@/components/issues/issue-layouts/filters"; import { WorkItemFiltersToggle } from "@/components/work-item-filters/filters-toggle"; @@ -170,14 +170,12 @@ export const GlobalIssuesHeader = observer(function GlobalIssuesHeader() { /> )} - +
{viewDetails && } {isDefaultView && defaultViewDetails && ( diff --git a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx index 8043f47..679641b 100644 --- a/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx +++ b/plane-src/apps/web/app/(all)/[workspaceSlug]/(projects)/workspace-views/page.tsx @@ -30,23 +30,25 @@ function WorkspaceViewsPage() { <>
-
- - setQuery(e.target.value)} - placeholder="Search" - mode="true-transparent" - /> -
-
- {DEFAULT_GLOBAL_VIEWS_LIST.filter((v) => t(v.i18n_label).toLowerCase().includes(query.toLowerCase())).map( - (option) => ( - - ) - )} - +
+
+ + setQuery(e.target.value)} + placeholder="Search workspace views" + mode="true-transparent" + /> +
+
+ {DEFAULT_GLOBAL_VIEWS_LIST.filter((v) => t(v.i18n_label).toLowerCase().includes(query.toLowerCase())).map( + (option) => ( + + ) + )} + +
diff --git a/plane-src/apps/web/core/components/analytics/analytics-section-wrapper.tsx b/plane-src/apps/web/core/components/analytics/analytics-section-wrapper.tsx index d46ce74..6adaf78 100644 --- a/plane-src/apps/web/core/components/analytics/analytics-section-wrapper.tsx +++ b/plane-src/apps/web/core/components/analytics/analytics-section-wrapper.tsx @@ -16,14 +16,14 @@ type Props = { }; function AnalyticsSectionWrapper(props: Props) { - const { title, children, className, actions, headerClassName } = props; + const { title, children, className, actions, headerClassName, subtitle } = props; return ( -
-
+
+
{title && ( -
-

{title}

- {/* {subtitle &&

• {subtitle}

} */} +
+

{title}

+ {subtitle ?

{subtitle}

: null}
)} {actions} diff --git a/plane-src/apps/web/core/components/analytics/analytics-wrapper.tsx b/plane-src/apps/web/core/components/analytics/analytics-wrapper.tsx index 6cd886b..649b8df 100644 --- a/plane-src/apps/web/core/components/analytics/analytics-wrapper.tsx +++ b/plane-src/apps/web/core/components/analytics/analytics-wrapper.tsx @@ -19,8 +19,13 @@ function AnalyticsWrapper(props: Props) { const { i18nTitle, children, className } = props; const { t } = useTranslation(); return ( -
-

{t(i18nTitle)}

+
+
+
+ Analytics +

{t(i18nTitle)}

+
+
{children}
); diff --git a/plane-src/apps/web/core/components/analytics/insight-card.tsx b/plane-src/apps/web/core/components/analytics/insight-card.tsx index d8a30a1..305d6b9 100644 --- a/plane-src/apps/web/core/components/analytics/insight-card.tsx +++ b/plane-src/apps/web/core/components/analytics/insight-card.tsx @@ -20,11 +20,11 @@ function InsightCard(props: InsightCardProps) { const count = data?.count ?? 0; return ( -
-
{label}
+
+
{label}
{!isLoading ? (
-
{count}
+
{count}
) : ( diff --git a/plane-src/apps/web/core/components/analytics/overview/active-project-item.tsx b/plane-src/apps/web/core/components/analytics/overview/active-project-item.tsx index 0af7dc8..fad5dd1 100644 --- a/plane-src/apps/web/core/components/analytics/overview/active-project-item.tsx +++ b/plane-src/apps/web/core/components/analytics/overview/active-project-item.tsx @@ -23,9 +23,11 @@ type Props = { function CompletionPercentage({ percentage }: { percentage: number }) { const percentageColor = - percentage > 50 ? "bg-success-subtle text-success-primary" : "bg-danger-subtle text-danger-primary"; + percentage > 50 + ? "bg-success-subtle/80 text-success-primary" + : "bg-danger-subtle/80 text-danger-primary"; return ( -
+
{percentage}%
); @@ -41,9 +43,9 @@ function ActiveProjectItem(props: Props) { if (!projectDetails) return null; return ( -
+
-
+
{projectDetails?.logo_props ? ( diff --git a/plane-src/apps/web/core/components/analytics/overview/project-insights.tsx b/plane-src/apps/web/core/components/analytics/overview/project-insights.tsx index 6987ce1..f7b1fc9 100644 --- a/plane-src/apps/web/core/components/analytics/overview/project-insights.tsx +++ b/plane-src/apps/web/core/components/analytics/overview/project-insights.tsx @@ -63,7 +63,7 @@ const ProjectInsights = observer(function ProjectInsights() { ) : ( @@ -95,9 +95,13 @@ const ProjectInsights = observer(function ProjectInsights() { /> )} -
-
{t("workspace_analytics.summary_of_projects")}
-
{t("workspace_analytics.all_projects")}
+
+
+ {t("workspace_analytics.summary_of_projects")} +
+
+ {t("workspace_analytics.all_projects")} +
{t("workspace_analytics.trend_on_charts")}
diff --git a/plane-src/apps/web/core/components/analytics/overview/root.tsx b/plane-src/apps/web/core/components/analytics/overview/root.tsx index 4b191ca..522b4e2 100644 --- a/plane-src/apps/web/core/components/analytics/overview/root.tsx +++ b/plane-src/apps/web/core/components/analytics/overview/root.tsx @@ -13,9 +13,9 @@ import ProjectInsights from "./project-insights"; function Overview() { return ( -
+
-
+
diff --git a/plane-src/apps/web/core/components/analytics/select/project.tsx b/plane-src/apps/web/core/components/analytics/select/project.tsx index 5c1d20a..c2f5f36 100644 --- a/plane-src/apps/web/core/components/analytics/select/project.tsx +++ b/plane-src/apps/web/core/components/analytics/select/project.tsx @@ -6,7 +6,6 @@ import { observer } from "mobx-react"; // plane package imports -import { getButtonStyling } from "@plane/propel/button"; import { Logo } from "@plane/propel/emoji-icon-picker"; import { ChevronDownIcon, ProjectIcon } from "@plane/propel/icons"; import { SearchSelectionDropdown } from "@plane/ui"; @@ -49,8 +48,14 @@ export const ProjectSelect = observer(function ProjectSelect(props: Props) { onChange={(val: string[]) => onChange(val)} options={options} className="border-none p-0" - menuButton={ -
+ menuButton={({ open }) => ( +
{value && value.length > 3 ? `3+ projects` @@ -62,7 +67,7 @@ export const ProjectSelect = observer(function ProjectSelect(props: Props) { : "All projects"}
- } + )} menuButtonWrapperClassName="h-auto w-auto border-none bg-transparent p-0 hover:bg-transparent" multiple /> diff --git a/plane-src/apps/web/core/components/analytics/work-items/root.tsx b/plane-src/apps/web/core/components/analytics/work-items/root.tsx index 55fb767..9417c00 100644 --- a/plane-src/apps/web/core/components/analytics/work-items/root.tsx +++ b/plane-src/apps/web/core/components/analytics/work-items/root.tsx @@ -14,7 +14,7 @@ import WorkItemsInsightTable from "./workitems-insight-table"; function WorkItems() { return ( -
+
diff --git a/plane-src/apps/web/core/components/dropdowns/cycle/cycle-options.tsx b/plane-src/apps/web/core/components/dropdowns/cycle/cycle-options.tsx index 7d12cbc..a86b7a0 100644 --- a/plane-src/apps/web/core/components/dropdowns/cycle/cycle-options.tsx +++ b/plane-src/apps/web/core/components/dropdowns/cycle/cycle-options.tsx @@ -16,6 +16,7 @@ import { useTranslation } from "@plane/i18n"; // icon import { CheckIcon, CycleGroupIcon, CycleIcon, SearchIcon } from "@plane/propel/icons"; import type { TCycleGroups } from "@plane/types"; +import { cn } from "@plane/utils"; // ui // store hooks import { useCycle } from "@/hooks/store/use-cycle"; @@ -126,17 +127,17 @@ export const CycleOptions = observer(function CycleOptions(props: CycleOptionsPr return (
-
+
setQuery(e.target.value)} placeholder={t("common.search.label")} @@ -144,7 +145,7 @@ export const CycleOptions = observer(function CycleOptions(props: CycleOptionsPr onKeyDown={searchInputKeyDown} />
-
+
{filteredOptions ? ( filteredOptions.length > 0 ? ( filteredOptions.map((option) => ( @@ -152,9 +153,11 @@ export const CycleOptions = observer(function CycleOptions(props: CycleOptionsPr key={option.value} value={option.value} className={({ active, selected }) => - `flex w-full cursor-pointer items-center justify-between gap-2 truncate rounded-sm px-1 py-1.5 select-none ${ - active ? "bg-layer-transparent-hover" : "" - } ${selected ? "text-primary" : "text-secondary"}` + cn("nodedc-dropdown-option", { + "bg-white/6": active, + "text-primary": selected, + "text-secondary": !selected, + }) } > {({ selected }) => ( @@ -166,10 +169,10 @@ export const CycleOptions = observer(function CycleOptions(props: CycleOptionsPr )) ) : ( -

{t("common.search.no_matches_found")}

+

{t("common.search.no_matches_found")}

) ) : ( -

{t("common.loading")}

+

{t("common.loading")}

)}
diff --git a/plane-src/apps/web/core/components/dropdowns/estimate.tsx b/plane-src/apps/web/core/components/dropdowns/estimate.tsx index c46c6c1..e994e0f 100644 --- a/plane-src/apps/web/core/components/dropdowns/estimate.tsx +++ b/plane-src/apps/web/core/components/dropdowns/estimate.tsx @@ -234,17 +234,17 @@ export const EstimateDropdown = observer(function EstimateDropdown(props: Props) {isOpen && (
-
+
setQuery(e.target.value)} placeholder={t("common.search.placeholder")} @@ -252,11 +252,9 @@ export const EstimateDropdown = observer(function EstimateDropdown(props: Props) onKeyDown={searchInputKeyDown} />
-
+
{currentActiveEstimateId === undefined ? ( -
+
{/* NOTE: This condition renders when estimates are not enabled for the project */}
@@ -272,9 +270,9 @@ export const EstimateDropdown = observer(function EstimateDropdown(props: Props) {({ active, selected }) => (
)) ) : ( -

{t("common.search.no_matching_results")}

+

{t("common.search.no_matching_results")}

) ) : ( -

{t("common.loading")}

+

{t("common.loading")}

)} )} diff --git a/plane-src/apps/web/core/components/dropdowns/intake-state/base.tsx b/plane-src/apps/web/core/components/dropdowns/intake-state/base.tsx index 4bffc3e..4911d68 100644 --- a/plane-src/apps/web/core/components/dropdowns/intake-state/base.tsx +++ b/plane-src/apps/web/core/components/dropdowns/intake-state/base.tsx @@ -210,14 +210,14 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown renderByDefault={renderByDefault} > {isOpen && ( - +
-
+
-
+
{filteredOptions ? ( filteredOptions.length > 0 ? ( filteredOptions.map((option) => ( @@ -238,11 +238,11 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown key={option.value} value={option.value} className={({ active, selected }) => - cn( - `flex w-full cursor-pointer items-center justify-between gap-2 truncate rounded-[0.9rem] px-2 py-2 select-none outline-none ${ - active ? "bg-white/6" : "" - } ${selected ? "text-primary" : "text-secondary"}` - ) + cn("nodedc-dropdown-option", { + "bg-white/6": active, + "text-primary": selected, + "text-secondary": !selected, + }) } > {({ selected }) => ( @@ -254,10 +254,10 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown )) ) : ( -

{t("no_matching_results")}

+

{t("no_matching_results")}

) ) : ( -

{t("loading")}

+

{t("loading")}

)}
diff --git a/plane-src/apps/web/core/components/dropdowns/layout.tsx b/plane-src/apps/web/core/components/dropdowns/layout.tsx index 23ecf0a..c7da7da 100644 --- a/plane-src/apps/web/core/components/dropdowns/layout.tsx +++ b/plane-src/apps/web/core/components/dropdowns/layout.tsx @@ -21,10 +21,11 @@ type TLayoutDropDown = { onChange: (value: EIssueLayoutTypes) => void; value: EIssueLayoutTypes; disabledLayouts?: EIssueLayoutTypes[]; + buttonContainerClassName?: string; }; export const LayoutDropDown = observer(function LayoutDropDown(props: TLayoutDropDown) { - const { onChange, value = EIssueLayoutTypes.LIST, disabledLayouts = [] } = props; + const { onChange, value = EIssueLayoutTypes.LIST, disabledLayouts = [], buttonContainerClassName } = props; // plane i18n const { t } = useTranslation(); // derived values @@ -74,7 +75,7 @@ export const LayoutDropDown = observer(function LayoutDropDown(props: TLayoutDro value={value?.toString()} keyExtractor={keyExtractor} options={options} - buttonContainerClassName={cn(getIconButtonStyling("secondary", "lg"), "w-auto px-2")} + buttonContainerClassName={cn(getIconButtonStyling("secondary", "lg"), "w-auto px-2", buttonContainerClassName)} buttonContent={buttonContent} renderItem={itemContent} disableSearch diff --git a/plane-src/apps/web/core/components/dropdowns/module/module-options.tsx b/plane-src/apps/web/core/components/dropdowns/module/module-options.tsx index 8c4098f..f541ce0 100644 --- a/plane-src/apps/web/core/components/dropdowns/module/module-options.tsx +++ b/plane-src/apps/web/core/components/dropdowns/module/module-options.tsx @@ -115,17 +115,17 @@ export const ModuleOptions = observer(function ModuleOptions(props: Props) { return (
-
+
setQuery(e.target.value)} placeholder={t("common.search.label")} @@ -133,7 +133,7 @@ export const ModuleOptions = observer(function ModuleOptions(props: Props) { onKeyDown={searchInputKeyDown} />
-
+
{filteredOptions ? ( filteredOptions.length > 0 ? ( filteredOptions.map((option) => ( @@ -142,9 +142,9 @@ export const ModuleOptions = observer(function ModuleOptions(props: Props) { value={option.value} className={({ active, selected }) => cn( - "flex w-full cursor-pointer items-center justify-between gap-2 truncate rounded-sm px-1 py-1.5 select-none", + "nodedc-dropdown-option", { - "bg-layer-transparent-hover": active, + "bg-white/6": active, "text-primary": selected, "text-secondary": !selected, } @@ -160,10 +160,10 @@ export const ModuleOptions = observer(function ModuleOptions(props: Props) { )) ) : ( -

{t("common.search.no_matching_results")}

+

{t("common.search.no_matching_results")}

) ) : ( -

{t("common.loading")}

+

{t("common.loading")}

)}
diff --git a/plane-src/apps/web/core/components/dropdowns/state/base.tsx b/plane-src/apps/web/core/components/dropdowns/state/base.tsx index b980aee..218cc51 100644 --- a/plane-src/apps/web/core/components/dropdowns/state/base.tsx +++ b/plane-src/apps/web/core/components/dropdowns/state/base.tsx @@ -216,12 +216,12 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown createPortal(
-
+
-
+
{filteredOptions ? ( filteredOptions.length > 0 ? ( filteredOptions.map((option) => ( @@ -242,11 +242,11 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown key={option.value} value={option.value} className={({ active, selected }) => - cn( - `flex w-full cursor-pointer items-center justify-between gap-2 truncate rounded-[0.9rem] px-2 py-2 select-none outline-none ${ - active ? "bg-white/6" : "" - } ${selected ? "text-primary" : "text-secondary"}` - ) + cn("nodedc-dropdown-option", { + "bg-white/6": active, + "text-primary": selected, + "text-secondary": !selected, + }) } > {({ selected }) => ( @@ -258,10 +258,10 @@ export const WorkItemStateDropdownBase = observer(function WorkItemStateDropdown )) ) : ( -

{t("no_matching_results")}

+

{t("no_matching_results")}

) ) : ( -

{t("loading")}

+

{t("loading")}

)}
diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx index 3ee1343..d4ef975 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx @@ -8,12 +8,12 @@ import { useState } from "react"; import { omit } from "lodash-es"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; -import { Ellipsis } from "lucide-react"; +import { MoreHorizontal } from "lucide-react"; // plane imports import { ARCHIVABLE_STATE_GROUPS, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import type { TIssue } from "@plane/types"; import { EIssuesStoreType } from "@plane/types"; -import { ActionDropdown, ContextMenu } from "@plane/ui"; +import { ActionDropdown, ContextMenu, cn } from "@plane/ui"; // hooks import { useIssues } from "@/hooks/store/use-issues"; import { useProject } from "@/hooks/store/use-project"; @@ -240,15 +240,17 @@ export const WorkItemDetailQuickActions = observer(function WorkItemDetailQuickA - -
+ + } + buttonAsChild items={MENU_ITEMS} placement={placements} portalElement={portalElement} diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/assignee-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/assignee-column.tsx index 78f30b0..5c72373 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/assignee-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/assignee-column.tsx @@ -42,7 +42,7 @@ export const SpreadsheetAssigneeColumn = observer(function SpreadsheetAssigneeCo buttonVariant={ issue?.assignee_ids && issue.assignee_ids.length > 1 ? "transparent-without-text" : "transparent-with-text" } - buttonClassName="text-left rounded-none group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" + buttonClassName="nodedc-spreadsheet-cell-button text-left" buttonContainerClassName="w-full" optionsClassName="z-[9]" onClose={onClose} diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/cycle-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/cycle-column.tsx index eff0416..2aec71e 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/cycle-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/cycle-column.tsx @@ -47,8 +47,8 @@ export const SpreadsheetCycleColumn = observer(function SpreadsheetCycleColumn(p disabled={disabled} placeholder="Select cycle" buttonVariant="transparent-with-text" - buttonContainerClassName="w-full relative flex items-center p-2 group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" - buttonClassName="relative leading-4 h-4.5 bg-transparent hover:bg-transparent px-0" + buttonContainerClassName="w-full" + buttonClassName="nodedc-spreadsheet-cell-button text-left" onClose={onClose} />
diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/due-date-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/due-date-column.tsx index 580198a..f6edc7d 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/due-date-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/due-date-column.tsx @@ -52,7 +52,7 @@ export const SpreadsheetDueDateColumn = observer(function SpreadsheetDueDateColu buttonVariant="transparent-with-text" buttonContainerClassName="w-full" buttonClassName={cn( - "rounded-none px-page-x text-left group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10", + "nodedc-spreadsheet-cell-button text-left", { "text-danger-primary": shouldHighlightIssueDueDate(issue.target_date, stateDetails?.group), } diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/estimate-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/estimate-column.tsx index a60262b..b8b291b 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/estimate-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/estimate-column.tsx @@ -31,7 +31,7 @@ export const SpreadsheetEstimateColumn = observer(function SpreadsheetEstimateCo projectId={issue.project_id ?? undefined} disabled={disabled} buttonVariant="transparent-with-text" - buttonClassName="text-left rounded-none group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" + buttonClassName="nodedc-spreadsheet-cell-button text-left" buttonContainerClassName="w-full" onClose={onClose} /> diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/label-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/label-column.tsx index 02ae8b6..e474857 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/label-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/label-column.tsx @@ -35,7 +35,7 @@ export const SpreadsheetLabelColumn = observer(function SpreadsheetLabelColumn(p defaultOptions={defaultLabelOptions} onChange={(data) => onChange(issue, { label_ids: data }, { changed_property: "labels", change_details: data })} className="h-full w-full" - buttonClassName="px-page-x w-full h-full group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 rounded-none" + buttonClassName="nodedc-spreadsheet-cell-button text-left" hideDropdownArrow maxRender={1} disabled={disabled} diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/module-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/module-column.tsx index 30f55a3..c0d2bd2 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/module-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/module-column.tsx @@ -55,8 +55,8 @@ export const SpreadsheetModuleColumn = observer(function SpreadsheetModuleColumn disabled={disabled} placeholder="Select modules" buttonVariant="transparent-with-text" - buttonContainerClassName="w-full relative flex items-center p-2 group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" - buttonClassName="relative leading-4 h-4.5 bg-transparent hover:bg-transparent !px-0" + buttonContainerClassName="w-full" + buttonClassName="nodedc-spreadsheet-cell-button text-left" onClose={onClose} multiple showCount diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/priority-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/priority-column.tsx index cab106d..7813154 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/priority-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/priority-column.tsx @@ -28,7 +28,7 @@ export const SpreadsheetPriorityColumn = observer(function SpreadsheetPriorityCo onChange={(data) => onChange(issue, { priority: data }, { changed_property: "priority", change_details: data })} disabled={disabled} buttonVariant="transparent-with-text" - buttonClassName="text-left rounded-none group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" + buttonClassName="nodedc-spreadsheet-cell-button text-left" buttonContainerClassName="w-full" onClose={onClose} /> diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/start-date-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/start-date-column.tsx index fd4a180..09404e4 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/start-date-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/start-date-column.tsx @@ -44,7 +44,7 @@ export const SpreadsheetStartDateColumn = observer(function SpreadsheetStartDate placeholder="Start date" icon={} buttonVariant="transparent-with-text" - buttonClassName="text-left rounded-none group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" + buttonClassName="nodedc-spreadsheet-cell-button text-left" buttonContainerClassName="w-full" optionsClassName="z-[9]" onClose={onClose} diff --git a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/state-column.tsx b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/state-column.tsx index 5136346..d9d7713 100644 --- a/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/state-column.tsx +++ b/plane-src/apps/web/core/components/issues/issue-layouts/spreadsheet/columns/state-column.tsx @@ -29,7 +29,7 @@ export const SpreadsheetStateColumn = observer(function SpreadsheetStateColumn(p onChange={(data) => onChange(issue, { state_id: data }, { changed_property: "state", change_details: data })} disabled={disabled} buttonVariant="transparent-with-text" - buttonClassName="text-left rounded-none group-[.selected-issue-row]:bg-accent-primary/5 group-[.selected-issue-row]:hover:bg-accent-primary/10 px-page-x" + buttonClassName="nodedc-spreadsheet-cell-button text-left" buttonContainerClassName="w-full" onClose={onClose} showTooltip diff --git a/plane-src/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx b/plane-src/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx index dd3c7b5..d6922f1 100644 --- a/plane-src/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx +++ b/plane-src/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx @@ -126,7 +126,7 @@ export const DraftIssueBlock = observer(function DraftIssueBlock(props: Props) { />
{ setIssueToEdit(issue); setCreateUpdateIssueModal(true); @@ -135,7 +135,7 @@ export const DraftIssueBlock = observer(function DraftIssueBlock(props: Props) { setIsDraftIssueModalOpen(false)} isDraft /> -
+
; return ( -
+
{issueIds.map((issueId: string) => ( @@ -100,8 +100,8 @@ export const WorkspaceDraftIssuesRoot = observer(function WorkspaceDraftIssuesRo ) : (
-
+
+
- {orderByDetails && t(orderByDetails?.i18n_label)} + {orderByDetails ? t(orderByDetails.i18n_label) : t("common.order_by.label")} +
} + menuButtonWrapperClassName="h-auto w-auto border-none bg-transparent p-0 hover:bg-transparent" placement="bottom-end" title={t("common.order_by.label")} sections={[ diff --git a/plane-src/apps/web/core/components/project/search-projects.tsx b/plane-src/apps/web/core/components/project/search-projects.tsx index 96b08c3..9fbe334 100644 --- a/plane-src/apps/web/core/components/project/search-projects.tsx +++ b/plane-src/apps/web/core/components/project/search-projects.tsx @@ -44,7 +44,7 @@ export const ProjectSearch = observer(function ProjectSearch() { { setIsSearchOpen(true); inputRef.current?.focus(); @@ -54,9 +54,9 @@ export const ProjectSearch = observer(function ProjectSearch() { )}
@@ -72,7 +72,7 @@ export const ProjectSearch = observer(function ProjectSearch() { {isSearchOpen && ( + - + - + ); const mainContent = ( -
+
{leftContent}
); - const ModalVariant =
{mainContent}
; + const ModalVariant = ( +
+ {mainContent} +
+ ); const HeaderVariant = (
@@ -160,7 +164,35 @@ export const FiltersRow = observer(function FiltersRow{variant === "modal" ? ModalVariant : HeaderVariant}; }); -const COMMON_OPERATION_BUTTON_CLASSNAME = "min-h-9 px-4 py-1"; +const COMMON_OPERATION_BUTTON_CLASSNAME = "px-6 py-0 text-[14px] font-medium"; + +type TDockActionButtonProps = React.ButtonHTMLAttributes & { + children: React.ReactNode; + variant: "primary" | "secondary"; +}; + +function DockActionButton(props: TDockActionButtonProps) { + const { children, className, disabled, variant, type = "button", ...buttonProps } = props; + + return ( + + ); +} type TElementTransitionProps = { children: React.ReactNode; diff --git a/plane-src/apps/web/core/components/stickies/layout/stickies-infinite.tsx b/plane-src/apps/web/core/components/stickies/layout/stickies-infinite.tsx index ea7029a..bc73d40 100644 --- a/plane-src/apps/web/core/components/stickies/layout/stickies-infinite.tsx +++ b/plane-src/apps/web/core/components/stickies/layout/stickies-infinite.tsx @@ -43,7 +43,7 @@ export const StickiesInfinite = observer(function StickiesInfinite() { useIntersectionObserver(containerRef, shouldObserve ? elementRef : null, handleLoadMore); return ( - + -
+
diff --git a/plane-src/apps/web/core/components/views/form.tsx b/plane-src/apps/web/core/components/views/form.tsx index c247317..633062e 100644 --- a/plane-src/apps/web/core/components/views/form.tsx +++ b/plane-src/apps/web/core/components/views/form.tsx @@ -22,7 +22,7 @@ import type { } from "@plane/types"; import { EViewAccess, EIssuesStoreType } from "@plane/types"; import { Input, TextArea } from "@plane/ui"; -import { getComputedDisplayFilters, getComputedDisplayProperties, getTabIndex } from "@plane/utils"; +import { cn, getComputedDisplayFilters, getComputedDisplayProperties, getTabIndex } from "@plane/utils"; // components import { DisplayFiltersSelection, FiltersDropdown } from "@/components/issues/issue-layouts/filters"; import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row"; @@ -88,6 +88,7 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { kanbanFilters: undefined, }; const { getIndex } = getTabIndex(ETabIndices.PROJECT_VIEW, isMobile); + const viewPropertyButtonClassName = "nodedc-work-item-property-button !min-h-7 !px-3 !py-0 text-12 font-medium"; const handleCreateUpdateView = async (formData: IProjectView) => { await handleFormSubmit({ @@ -106,8 +107,8 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { }; return ( -
-
+ +

{data ? t("view.update.label") : t("view.create.label")}

@@ -118,7 +119,7 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { className="flex-shrink0 flex items-center justify-center" buttonClassName="flex items-center justify-center" label={ - + <> {logoValue?.in_use ? ( @@ -171,7 +172,7 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { onChange={onChange} hasError={Boolean(errors.name)} placeholder={t("common.title")} - className="w-full text-14" + className="nodedc-modal-input w-full !px-4 !py-3 text-13" tabIndex={getIndex("name")} autoFocus /> @@ -189,7 +190,7 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { id="description" name="description" placeholder={t("common.description")} - className="min-h-24 w-full resize-none text-14" + className="nodedc-modal-input min-h-[9.5rem] w-full resize-none !rounded-[1.5rem] !px-4 !py-4 text-13" hasError={Boolean(errors?.description)} value={value} onChange={onChange} @@ -198,7 +199,7 @@ export const ProjectViewForm = observer(function ProjectViewForm(props: Props) { )} />
-
+
{/* display filters dropdown */} ( - + ( +
+ {t("common.display")} +
+ )} + >
-
- - -