chore: replace prettier with oxfmt (#8676)
This commit is contained in:
parent
9ee73d57ef
commit
41abaffc6e
1008 changed files with 4046 additions and 4027 deletions
|
|
@ -24,7 +24,7 @@ export const WorkspaceActiveCycleHeader = observer(function WorkspaceActiveCycle
|
|||
component={
|
||||
<BreadcrumbLink
|
||||
label={t("active_cycles")}
|
||||
icon={<CycleIcon className="h-4 w-4 text-tertiary rotate-180" />}
|
||||
icon={<CycleIcon className="h-4 w-4 rotate-180 text-tertiary" />}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -72,22 +72,22 @@ function AnalyticsPage({ params }: Route.ComponentProps) {
|
|||
{workspaceProjectIds && (
|
||||
<>
|
||||
{workspaceProjectIds.length > 0 || loader === "init-loader" ? (
|
||||
<div className="flex h-full overflow-hidden ">
|
||||
<Tabs value={selectedTab} onValueChange={handleTabChange} className="w-full h-full">
|
||||
<div className={"flex flex-col w-full h-full"}>
|
||||
<div className="flex h-full overflow-hidden">
|
||||
<Tabs value={selectedTab} onValueChange={handleTabChange} className="h-full w-full">
|
||||
<div className={"flex h-full w-full flex-col"}>
|
||||
<div
|
||||
className={cn(
|
||||
"px-6 py-2 border-b border-subtle flex items-center gap-4 overflow-hidden w-full justify-between bg-surface-1"
|
||||
"flex w-full items-center justify-between gap-4 overflow-hidden border-b border-subtle bg-surface-1 px-6 py-2"
|
||||
)}
|
||||
>
|
||||
<Tabs.List className={"overflow-x-auto flex w-fit h-7"}>
|
||||
<Tabs.List className={"flex h-7 w-fit overflow-x-auto"}>
|
||||
{ANALYTICS_TABS.map((tab) => (
|
||||
<Tabs.Trigger
|
||||
key={tab.key}
|
||||
value={tab.key}
|
||||
disabled={tab.isDisabled}
|
||||
size="md"
|
||||
className="px-3 h-6"
|
||||
className="h-6 px-3"
|
||||
onClick={() => {
|
||||
if (!tab.isDisabled) {
|
||||
handleTabChange(tab.key);
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@ export const ProjectWorkItemDetailsHeader = observer(function ProjectWorkItemDet
|
|||
<>
|
||||
{projectPreferences.navigationMode === "TABBED" && (
|
||||
<div className="z-20">
|
||||
<Row className="h-header flex gap-2 w-full items-center border-b border-subtle bg-surface-1">
|
||||
<div className="flex items-center gap-2 divide-x divide-subtle h-full w-full">
|
||||
<div className="flex items-center gap-2 size-full flex-1">
|
||||
<Row className="flex h-header w-full items-center gap-2 border-b border-subtle bg-surface-1">
|
||||
<div className="flex h-full w-full items-center gap-2 divide-x divide-subtle">
|
||||
<div className="flex size-full flex-1 items-center gap-2">
|
||||
{sidebarCollapsed && (
|
||||
<div className="shrink-0">
|
||||
<AppSidebarToggleButton />
|
||||
|
|
|
|||
|
|
@ -110,15 +110,15 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
|
|||
excludedElementId="extended-project-sidebar-toggle"
|
||||
className="px-0"
|
||||
>
|
||||
<div className="flex flex-col gap-1 w-full sticky top-4 px-4">
|
||||
<div className="sticky top-4 flex w-full flex-col gap-1 px-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-13 font-semibold text-tertiary py-1.5">Projects</span>
|
||||
<span className="py-1.5 text-13 font-semibold text-tertiary">Projects</span>
|
||||
{isAuthorizedUser && (
|
||||
<Tooltip tooltipHeading={t("create_project")} tooltipContent="">
|
||||
<button
|
||||
type="button"
|
||||
data-ph-element={PROJECT_TRACKER_ELEMENTS.EXTENDED_SIDEBAR_ADD_BUTTON}
|
||||
className="p-0.5 rounded-sm hover:bg-layer-1 flex-shrink-0 text-tertiary hover:text-secondary transition-colors"
|
||||
className="flex-shrink-0 rounded-sm p-0.5 text-tertiary transition-colors hover:bg-layer-1 hover:text-secondary"
|
||||
onClick={() => {
|
||||
setIsProjectModalOpen(true);
|
||||
}}
|
||||
|
|
@ -128,7 +128,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
|
|||
</Tooltip>
|
||||
)}
|
||||
</div>
|
||||
<div className="ml-auto flex items-center gap-1.5 rounded-md border border-subtle bg-surface-1 px-2.5 py-1 w-full">
|
||||
<div className="ml-auto flex w-full items-center gap-1.5 rounded-md border border-subtle bg-surface-1 px-2.5 py-1">
|
||||
<SearchIcon className="h-3.5 w-3.5 text-placeholder" />
|
||||
<input
|
||||
className="w-full max-w-[234px] border-none bg-transparent text-13 outline-none placeholder:text-placeholder"
|
||||
|
|
@ -140,7 +140,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
|
|||
</div>
|
||||
</div>
|
||||
{filteredProjects.length === 0 ? (
|
||||
<div className="flex flex-col items-center mt-4 p-10">
|
||||
<div className="mt-4 flex flex-col items-center p-10">
|
||||
<EmptyStateCompact
|
||||
title={t("common_empty_state.search.title")}
|
||||
description={t("common_empty_state.search.description")}
|
||||
|
|
@ -150,7 +150,7 @@ export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar()
|
|||
/>
|
||||
</div>
|
||||
) : (
|
||||
<div className="flex flex-col gap-0.5 overflow-x-hidden overflow-y-auto vertical-scrollbar scrollbar-sm flex-grow mt-4 pl-9 pr-2">
|
||||
<div className="vertical-scrollbar mt-4 flex scrollbar-sm flex-grow flex-col gap-0.5 overflow-x-hidden overflow-y-auto pr-2 pl-9">
|
||||
{filteredProjects.map((projectId, index) => (
|
||||
<SidebarProjectsListItem
|
||||
key={projectId}
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@ export const ExtendedSidebarWrapper = observer(function ExtendedSidebarWrapper(p
|
|||
id={excludedElementId}
|
||||
ref={extendedSidebarRef}
|
||||
className={cn(
|
||||
"absolute h-full z-[21] flex flex-col py-2 transform transition-all duration-300 ease-in-out bg-surface-1 border-r border-subtle p-4 shadow-sm",
|
||||
"shadow-sm absolute z-[21] flex h-full transform flex-col border-r border-subtle bg-surface-1 p-4 py-2 transition-all duration-300 ease-in-out",
|
||||
{
|
||||
"opacity-100": isExtendedSidebarOpened,
|
||||
"opacity-0 hidden": !isExtendedSidebarOpened,
|
||||
"hidden opacity-0": !isExtendedSidebarOpened,
|
||||
},
|
||||
className
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ function WorkspaceLayout() {
|
|||
return (
|
||||
<>
|
||||
<ProjectsAppPowerKProvider />
|
||||
<div className="relative flex flex-col h-full w-full overflow-hidden rounded-lg border border-subtle">
|
||||
<div id="full-screen-portal" className="inset-0 absolute w-full" />
|
||||
<div className="relative flex h-full w-full flex-col overflow-hidden rounded-lg border border-subtle">
|
||||
<div id="full-screen-portal" className="absolute inset-0 w-full" />
|
||||
<div className="relative flex size-full overflow-hidden">
|
||||
<ProjectAppSidebar />
|
||||
<ExtendedProjectSidebar />
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ import { NotificationsSidebarRoot } from "@/components/workspace-notifications/s
|
|||
|
||||
export default function ProjectInboxIssuesLayout() {
|
||||
return (
|
||||
<div className="relative w-full h-full overflow-hidden flex items-center">
|
||||
<div className="relative flex h-full w-full items-center overflow-hidden">
|
||||
<NotificationsSidebarRoot />
|
||||
<div className="w-full h-full overflow-hidden overflow-y-auto">
|
||||
<div className="h-full w-full overflow-hidden overflow-y-auto">
|
||||
<Outlet />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ function ProfileActivityPage() {
|
|||
<h3 className="text-16 font-medium">{t("profile.stats.recent_activity.title")}</h3>
|
||||
{canDownloadActivity && <DownloadActivityButton />}
|
||||
</div>
|
||||
<div className="vertical-scrollbar scrollbar-md flex h-full flex-col overflow-y-auto px-5 md:px-9">
|
||||
<div className="vertical-scrollbar flex scrollbar-md h-full flex-col overflow-y-auto px-5 md:px-9">
|
||||
{activityPages}
|
||||
{pageCount < totalPages && resultsCount !== 0 && (
|
||||
<div className="flex w-full items-center justify-center text-11">
|
||||
|
|
|
|||
|
|
@ -59,8 +59,8 @@ function UseProfileLayout({ params }: Route.ComponentProps) {
|
|||
<>
|
||||
{/* Passing the type prop from the current route value as we need the header as top most component.
|
||||
TODO: We are depending on the route path to handle the mobile header type. If the path changes, this logic will break. */}
|
||||
<div className="h-full w-full flex flex-col md:flex-row overflow-hidden">
|
||||
<div className="h-full w-full flex flex-col overflow-hidden">
|
||||
<div className="flex h-full w-full flex-col overflow-hidden md:flex-row">
|
||||
<div className="flex h-full w-full flex-col overflow-hidden">
|
||||
<AppHeader
|
||||
header={
|
||||
<UserProfileHeader
|
||||
|
|
@ -72,11 +72,11 @@ function UseProfileLayout({ params }: Route.ComponentProps) {
|
|||
mobileHeader={isIssuesTab && <ProfileIssuesMobileHeader />}
|
||||
/>
|
||||
<ContentWrapper>
|
||||
<div className="h-full w-full flex flex-row md:flex-col md:overflow-hidden">
|
||||
<div className="flex h-full w-full flex-row md:flex-col md:overflow-hidden">
|
||||
<div className="flex w-full flex-col md:h-full md:overflow-hidden">
|
||||
<ProfileNavbar isAuthorized={!!isAuthorized} />
|
||||
{isAuthorized || !isAuthorizedPath ? (
|
||||
<div className={`w-full overflow-hidden h-full`}>
|
||||
<div className={`h-full w-full overflow-hidden`}>
|
||||
<Outlet />
|
||||
</div>
|
||||
) : (
|
||||
|
|
|
|||
|
|
@ -90,9 +90,9 @@ export const ProfileIssuesMobileHeader = observer(function ProfileIssuesMobileHe
|
|||
className="flex flex-grow justify-center text-13 text-secondary"
|
||||
placement="bottom-start"
|
||||
customButton={
|
||||
<div className="flex flex-center text-13 text-secondary">
|
||||
<div className="flex-center flex text-13 text-secondary">
|
||||
{t("common.layout")}
|
||||
<ChevronDownIcon className="ml-2 h-4 w-4 text-secondary my-auto" strokeWidth={2} />
|
||||
<ChevronDownIcon className="my-auto ml-2 h-4 w-4 text-secondary" strokeWidth={2} />
|
||||
</div>
|
||||
}
|
||||
customButtonClassName="flex flex-center text-secondary text-13"
|
||||
|
|
@ -119,7 +119,7 @@ export const ProfileIssuesMobileHeader = observer(function ProfileIssuesMobileHe
|
|||
title={t("common.display")}
|
||||
placement="bottom-end"
|
||||
menuButton={
|
||||
<div className="flex flex-center text-13 text-secondary">
|
||||
<div className="flex-center flex text-13 text-secondary">
|
||||
{t("common.display")}
|
||||
<ChevronDownIcon className="ml-2 h-4 w-4 text-secondary" strokeWidth={2} />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export function ProfileNavbar(props: Props) {
|
|||
<Link key={tab.route} href={`/${workspaceSlug}/profile/${userId}/${tab.route}`}>
|
||||
<span
|
||||
className={cn(
|
||||
`flex whitespace-nowrap border-b-2 p-4 text-13 font-medium outline-none text-tertiary hover:text-primary ${
|
||||
`flex border-b-2 p-4 text-13 font-medium whitespace-nowrap text-tertiary outline-none hover:text-primary ${
|
||||
pathname === `/${workspaceSlug}/profile/${userId}${tab.selected}`
|
||||
? "border-accent-strong text-accent-primary hover:text-accent-primary"
|
||||
: "border-transparent"
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ export const ProjectArchivesHeader = observer(function ProjectArchivesHeader(pro
|
|||
tooltipContent={`There are ${issueCount} ${issueCount > 1 ? "work items" : "work item"} in project's archived`}
|
||||
position="bottom"
|
||||
>
|
||||
<span className="cursor-default flex items-center text-center justify-center px-2.5 py-0.5 flex-shrink-0 bg-accent-primary/20 text-accent-primary text-11 font-semibold rounded-xl">
|
||||
<span className="flex flex-shrink-0 cursor-default items-center justify-center rounded-xl bg-accent-primary/20 px-2.5 py-0.5 text-center text-11 font-semibold text-accent-primary">
|
||||
{issueCount}
|
||||
</span>
|
||||
</Tooltip>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ function CycleDetailPage({ params }: Route.ComponentProps) {
|
|||
{!isSidebarCollapsed && (
|
||||
<div
|
||||
className={cn(
|
||||
"flex h-full w-[21.5rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-subtle bg-surface-1 px-4 duration-300 vertical-scrollbar scrollbar-sm absolute right-0 z-13 shadow-raised-200"
|
||||
"vertical-scrollbar absolute right-0 z-13 flex scrollbar-sm h-full w-[21.5rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-subtle bg-surface-1 px-4 shadow-raised-200 duration-300"
|
||||
)}
|
||||
>
|
||||
<CycleDetailsSidebar
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ export const CycleIssuesHeader = observer(function CycleIssuesHeader() {
|
|||
</div>
|
||||
</Header.LeftItem>
|
||||
<Header.RightItem className="items-center">
|
||||
<div className="hidden items-center gap-2 md:flex ">
|
||||
<div className="hidden items-center gap-2 md:flex">
|
||||
<div className="hidden @4xl:flex">
|
||||
<LayoutSelection
|
||||
layouts={[
|
||||
|
|
@ -259,7 +259,7 @@ export const CycleIssuesHeader = observer(function CycleIssuesHeader() {
|
|||
icon={PanelRight}
|
||||
onClick={toggleSidebar}
|
||||
className={cn({
|
||||
"text-accent-primary bg-accent-subtle": !isSidebarCollapsed,
|
||||
"bg-accent-subtle text-accent-primary": !isSidebarCollapsed,
|
||||
})}
|
||||
/>
|
||||
<CycleQuickActions
|
||||
|
|
|
|||
|
|
@ -96,13 +96,13 @@ export const CycleIssuesMobileHeader = observer(function CycleIssuesMobileHeader
|
|||
onClose={() => setAnalyticsModal(false)}
|
||||
cycleDetails={cycleDetails ?? undefined}
|
||||
/>
|
||||
<div className="flex justify-evenly py-2 border-b border-subtle md:hidden bg-surface-1">
|
||||
<div className="flex justify-evenly border-b border-subtle bg-surface-1 py-2 md:hidden">
|
||||
<CustomMenu
|
||||
maxHeight={"md"}
|
||||
className="flex flex-grow justify-center text-secondary text-13"
|
||||
className="flex flex-grow justify-center text-13 text-secondary"
|
||||
placement="bottom-start"
|
||||
customButton={
|
||||
<span className="flex flex-grow justify-center text-secondary text-13">{t("common.layout")}</span>
|
||||
<span className="flex flex-grow justify-center text-13 text-secondary">{t("common.layout")}</span>
|
||||
}
|
||||
customButtonClassName="flex flex-grow justify-center text-secondary text-13"
|
||||
closeOnSelect
|
||||
|
|
@ -115,19 +115,19 @@ export const CycleIssuesMobileHeader = observer(function CycleIssuesMobileHeader
|
|||
}}
|
||||
className="flex items-center gap-2"
|
||||
>
|
||||
<IssueLayoutIcon layout={ISSUE_LAYOUTS[index].key} className="w-3 h-3" />
|
||||
<IssueLayoutIcon layout={ISSUE_LAYOUTS[index].key} className="h-3 w-3" />
|
||||
<div className="text-tertiary">{t(layout.titleTranslationKey)}</div>
|
||||
</CustomMenu.MenuItem>
|
||||
))}
|
||||
</CustomMenu>
|
||||
<div className="flex flex-grow justify-center border-l border-subtle items-center text-secondary text-13">
|
||||
<div className="flex flex-grow items-center justify-center border-l border-subtle text-13 text-secondary">
|
||||
<FiltersDropdown
|
||||
title={t("common.display")}
|
||||
placement="bottom-end"
|
||||
menuButton={
|
||||
<span className="flex items-center text-secondary text-13">
|
||||
<span className="flex items-center text-13 text-secondary">
|
||||
{t("common.display")}
|
||||
<ChevronDownIcon className="text-secondary h-4 w-4 ml-2" />
|
||||
<ChevronDownIcon className="ml-2 h-4 w-4 text-secondary" />
|
||||
</span>
|
||||
}
|
||||
>
|
||||
|
|
@ -148,7 +148,7 @@ export const CycleIssuesMobileHeader = observer(function CycleIssuesMobileHeader
|
|||
|
||||
<span
|
||||
onClick={() => setAnalyticsModal(true)}
|
||||
className="flex flex-grow justify-center text-secondary text-13 border-l border-subtle"
|
||||
className="flex flex-grow justify-center border-l border-subtle text-13 text-secondary"
|
||||
>
|
||||
{t("common.analytics")}
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ export const CyclesListHeader = observer(function CyclesListHeader() {
|
|||
toggleCreateCycleModal(true);
|
||||
}}
|
||||
>
|
||||
<div className="sm:hidden block">{t("add")}</div>
|
||||
<div className="block sm:hidden">{t("add")}</div>
|
||||
<div className="hidden sm:block">{t("project_cycles.add_cycle")}</div>
|
||||
</Button>
|
||||
</Header.RightItem>
|
||||
|
|
|
|||
|
|
@ -46,12 +46,12 @@ export const CyclesListMobileHeader = observer(function CyclesListMobileHeader()
|
|||
<div className="flex justify-center sm:hidden">
|
||||
<CustomMenu
|
||||
maxHeight={"md"}
|
||||
className="flex flex-grow justify-center text-secondary text-13 py-2 border-b border-subtle bg-surface-1"
|
||||
className="flex flex-grow justify-center border-b border-subtle bg-surface-1 py-2 text-13 text-secondary"
|
||||
// placement="bottom-start"
|
||||
customButton={
|
||||
<span className="flex items-center gap-2">
|
||||
<ListLayoutIcon className="h-4 w-4" />
|
||||
<span className="flex flex-grow justify-center text-secondary text-13">Layout</span>
|
||||
<span className="flex flex-grow justify-center text-13 text-secondary">Layout</span>
|
||||
</span>
|
||||
}
|
||||
customButtonClassName="flex flex-grow justify-center items-center text-secondary text-13"
|
||||
|
|
@ -69,7 +69,7 @@ export const CyclesListMobileHeader = observer(function CyclesListMobileHeader()
|
|||
}}
|
||||
className="flex items-center gap-2"
|
||||
>
|
||||
<layout.icon className="w-3 h-3" />
|
||||
<layout.icon className="h-3 w-3" />
|
||||
<div className="text-tertiary">{layout.title}</div>
|
||||
</CustomMenu.MenuItem>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ function ProjectCyclesPage({ params }: Route.ComponentProps) {
|
|||
// No access to cycle
|
||||
if (currentProjectDetails?.cycle_view === false)
|
||||
return (
|
||||
<div className="flex items-center justify-center h-full w-full">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<DetailedEmptyState
|
||||
title={t("disabled_project.empty_state.cycle.title")}
|
||||
description={t("disabled_project.empty_state.cycle.description")}
|
||||
|
|
@ -94,7 +94,7 @@ function ProjectCyclesPage({ params }: Route.ComponentProps) {
|
|||
return (
|
||||
<>
|
||||
<PageHead title={pageTitle} />
|
||||
<div className="w-full h-full">
|
||||
<div className="h-full w-full">
|
||||
<CycleCreateUpdateModal
|
||||
workspaceSlug={workspaceSlug}
|
||||
projectId={projectId}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ function ProjectInboxPage({ params }: Route.ComponentProps) {
|
|||
// No access to inbox
|
||||
if (currentProjectDetails?.inbox_view === false)
|
||||
return (
|
||||
<div className="flex items-center justify-center h-full w-full">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<DetailedEmptyState
|
||||
title={t("disabled_project.empty_state.inbox.title")}
|
||||
description={t("disabled_project.empty_state.inbox.description")}
|
||||
|
|
@ -79,7 +79,7 @@ function ProjectInboxPage({ params }: Route.ComponentProps) {
|
|||
return (
|
||||
<div className="flex h-full flex-col">
|
||||
<PageHead title={pageTitle} />
|
||||
<div className="w-full h-full overflow-hidden">
|
||||
<div className="h-full w-full overflow-hidden">
|
||||
<InboxIssueRoot
|
||||
workspaceSlug={workspaceSlug}
|
||||
projectId={projectId}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ export default function IssueDetailsPage({ loaderData }: Route.ComponentProps) {
|
|||
|
||||
if (loaderData.error) {
|
||||
return (
|
||||
<div className="flex items-center justify-center size-full">
|
||||
<div className="flex size-full items-center justify-center">
|
||||
<EmptyState
|
||||
image={resolvedTheme === "dark" ? emptyIssueDark : emptyIssueLight}
|
||||
title={t("issue.empty_state.issue_detail.title")}
|
||||
|
|
@ -65,7 +65,7 @@ export default function IssueDetailsPage({ loaderData }: Route.ComponentProps) {
|
|||
}
|
||||
|
||||
return (
|
||||
<div className="flex items-center justify-center size-full">
|
||||
<div className="flex size-full items-center justify-center">
|
||||
<LogoSpinner />
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ export const ProjectIssuesMobileHeader = observer(function ProjectIssuesMobileHe
|
|||
onClose={() => setAnalyticsModal(false)}
|
||||
projectDetails={currentProjectDetails ?? undefined}
|
||||
/>
|
||||
<div className="md:hidden flex justify-evenly border-b border-subtle py-2 z-[13] bg-surface-1">
|
||||
<div className="z-[13] flex justify-evenly border-b border-subtle bg-surface-1 py-2 md:hidden">
|
||||
<MobileLayoutSelection
|
||||
layouts={[EIssueLayoutTypes.LIST, EIssueLayoutTypes.KANBAN, EIssueLayoutTypes.CALENDAR]}
|
||||
onChange={handleLayoutChange}
|
||||
|
|
|
|||
|
|
@ -32,16 +32,16 @@ function ProjectLayout({ params }: Route.ComponentProps) {
|
|||
<>
|
||||
{projectPreferences.navigationMode === "TABBED" && (
|
||||
<div className="z-20">
|
||||
<Row className="h-header flex gap-2 w-full items-center border-b border-subtle bg-surface-1">
|
||||
<div className="flex items-center gap-2 divide-x divide-subtle h-full w-full">
|
||||
<div className="flex items-center gap-2 size-full flex-1">
|
||||
<Row className="flex h-header w-full items-center gap-2 border-b border-subtle bg-surface-1">
|
||||
<div className="flex h-full w-full items-center gap-2 divide-x divide-subtle">
|
||||
<div className="flex size-full flex-1 items-center gap-2">
|
||||
{sidebarCollapsed && (
|
||||
<div className="shrink-0">
|
||||
<AppSidebarToggleButton />
|
||||
</div>
|
||||
)}
|
||||
<Header className={cn("h-full", { "pl-1.5": !sidebarCollapsed })}>
|
||||
<Header.LeftItem className="h-full max-w-full flex items-center gap-2">
|
||||
<Header.LeftItem className="flex h-full max-w-full items-center gap-2">
|
||||
<TabNavigationRoot workspaceSlug={workspaceSlug} projectId={projectId} />
|
||||
</Header.LeftItem>
|
||||
</Header>
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ function ModuleIssuesPage({ params }: Route.ComponentProps) {
|
|||
{!isSidebarCollapsed && (
|
||||
<div
|
||||
className={cn(
|
||||
"flex h-full w-[24rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-subtle bg-surface-1 px-6 duration-300 vertical-scrollbar scrollbar-sm absolute right-0 z-13 shadow-raised-200"
|
||||
"vertical-scrollbar absolute right-0 z-13 flex scrollbar-sm h-full w-[24rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-subtle bg-surface-1 px-6 shadow-raised-200 duration-300"
|
||||
)}
|
||||
>
|
||||
<ModuleAnalyticsSidebar moduleId={moduleId} handleClose={toggleSidebar} />
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ export const ModuleIssuesHeader = observer(function ModuleIssuesHeader() {
|
|||
icon={PanelRight}
|
||||
onClick={toggleSidebar}
|
||||
className={cn({
|
||||
"text-accent-primary bg-accent-subtle": !isSidebarCollapsed,
|
||||
"bg-accent-subtle text-accent-primary": !isSidebarCollapsed,
|
||||
})}
|
||||
/>
|
||||
{moduleId && (
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ export const ModulesListHeader = observer(function ModulesListHeader() {
|
|||
}}
|
||||
size="lg"
|
||||
>
|
||||
<div className="sm:hidden block">{t("add")}</div>
|
||||
<div className="block sm:hidden">{t("add")}</div>
|
||||
<div className="hidden sm:block">{t("project_module.add_module")}</div>
|
||||
</Button>
|
||||
) : (
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ export const ModulesListMobileHeader = observer(function ModulesListMobileHeader
|
|||
<div className="flex justify-start md:hidden">
|
||||
<CustomMenu
|
||||
maxHeight={"md"}
|
||||
className="flex flex-grow justify-start text-secondary text-13 py-2 border-b border-subtle bg-surface-1"
|
||||
className="flex flex-grow justify-start border-b border-subtle bg-surface-1 py-2 text-13 text-secondary"
|
||||
// placement="bottom-start"
|
||||
customButton={
|
||||
<Row className="flex flex-grow justify-center text-secondary text-13 gap-2">
|
||||
<span>Layout</span> <ChevronDownIcon className="h-4 w-4 text-secondary my-auto" strokeWidth={1} />
|
||||
<Row className="flex flex-grow justify-center gap-2 text-13 text-secondary">
|
||||
<span>Layout</span> <ChevronDownIcon className="my-auto h-4 w-4 text-secondary" strokeWidth={1} />
|
||||
</Row>
|
||||
}
|
||||
customButtonClassName="flex flex-grow justify-center items-center text-secondary text-13"
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ function ProjectModulesPage({ params }: Route.ComponentProps) {
|
|||
// No access to
|
||||
if (currentProjectDetails?.module_view === false)
|
||||
return (
|
||||
<div className="flex items-center justify-center h-full w-full">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<DetailedEmptyState
|
||||
title={t("disabled_project.empty_state.module.title")}
|
||||
description={t("disabled_project.empty_state.module.description")}
|
||||
|
|
@ -85,7 +85,7 @@ function ProjectModulesPage({ params }: Route.ComponentProps) {
|
|||
return (
|
||||
<>
|
||||
<PageHead title={pageTitle} />
|
||||
<div className="h-full w-full flex flex-col">
|
||||
<div className="flex h-full w-full flex-col">
|
||||
{(calculateTotalFilters(currentProjectFilters) !== 0 || currentProjectDisplayFilters?.favorites) && (
|
||||
<ModuleAppliedFiltersList
|
||||
appliedFilters={currentProjectFilters}
|
||||
|
|
|
|||
|
|
@ -153,16 +153,16 @@ function PageDetailsPage({ params }: Route.ComponentProps) {
|
|||
|
||||
if ((!page || !id) && !pageDetailsError)
|
||||
return (
|
||||
<div className="size-full grid place-items-center">
|
||||
<div className="grid size-full place-items-center">
|
||||
<LogoSpinner />
|
||||
</div>
|
||||
);
|
||||
|
||||
if (pageDetailsError || !canCurrentUserAccessPage)
|
||||
return (
|
||||
<div className="h-full w-full flex flex-col items-center justify-center">
|
||||
<h3 className="text-16 font-semibold text-center">Page not found</h3>
|
||||
<p className="text-13 text-secondary text-center mt-3">
|
||||
<div className="flex h-full w-full flex-col items-center justify-center">
|
||||
<h3 className="text-center text-16 font-semibold">Page not found</h3>
|
||||
<p className="mt-3 text-center text-13 text-secondary">
|
||||
The page you are trying to access doesn{"'"}t exist or you don{"'"}t have permission to view it.
|
||||
</p>
|
||||
<Link
|
||||
|
|
@ -180,7 +180,7 @@ function PageDetailsPage({ params }: Route.ComponentProps) {
|
|||
<>
|
||||
<PageHead title={name} />
|
||||
<div className="flex h-full flex-col justify-between">
|
||||
<div className="relative h-full w-full flex-shrink-0 flex flex-col overflow-hidden">
|
||||
<div className="relative flex h-full w-full flex-shrink-0 flex-col overflow-hidden">
|
||||
<PageRoot
|
||||
config={pageRootConfig}
|
||||
handlers={pageRootHandlers}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ export const PageDetailsHeader = observer(function PageDetailsHeader() {
|
|||
value: _page.id,
|
||||
query: _page.name,
|
||||
content: (
|
||||
<div className="flex gap-2 items-center justify-between">
|
||||
<div className="flex items-center justify-between gap-2">
|
||||
<SwitcherLabel logo_props={_page.logo_props} name={getPageName(_page.name)} LabelIcon={PageIcon} />
|
||||
<PageAccessIcon {..._page} />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ function ProjectPagesPage({ params }: Route.ComponentProps) {
|
|||
// No access to cycle
|
||||
if (currentProjectDetails?.page_view === false)
|
||||
return (
|
||||
<div className="flex items-center justify-center h-full w-full">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<DetailedEmptyState
|
||||
title={t("disabled_project.empty_state.page.title")}
|
||||
description={t("disabled_project.empty_state.page.description")}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export const ViewMobileHeader = observer(function ViewMobileHeader() {
|
|||
|
||||
return (
|
||||
<>
|
||||
<div className="md:hidden flex justify-evenly border-b border-subtle py-2 z-[13] bg-surface-1">
|
||||
<div className="z-[13] flex justify-evenly border-b border-subtle bg-surface-1 py-2 md:hidden">
|
||||
<Row className="flex flex-grow items-center justify-center border-l border-subtle text-13 text-secondary">
|
||||
<ViewOrderByDropdown
|
||||
sortBy={filters.sortBy}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ function ProjectViewsPage({ params }: Route.ComponentProps) {
|
|||
// No access to
|
||||
if (currentProjectDetails?.issue_views_view === false)
|
||||
return (
|
||||
<div className="flex items-center justify-center h-full w-full">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<DetailedEmptyState
|
||||
title={t("disabled_project.empty_state.view.title")}
|
||||
description={t("disabled_project.empty_state.view.description")}
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ function WorkspaceViewsPage() {
|
|||
return (
|
||||
<>
|
||||
<PageHead title={pageTitle} />
|
||||
<div className="flex flex-col h-full w-full overflow-hidden">
|
||||
<div className="flex h-11 w-full items-center gap-2.5 px-5 py-3 overflow-hidden border-b border-subtle">
|
||||
<div className="flex h-full w-full flex-col overflow-hidden">
|
||||
<div className="flex h-11 w-full items-center gap-2.5 overflow-hidden border-b border-subtle px-5 py-3">
|
||||
<SearchIcon className="text-secondary" width={14} height={14} strokeWidth={2} />
|
||||
<Input
|
||||
className="w-full bg-transparent !p-0 text-11 leading-5 text-secondary placeholder:text-placeholder focus:outline-none"
|
||||
|
|
@ -40,7 +40,7 @@ function WorkspaceViewsPage() {
|
|||
mode="true-transparent"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col h-full w-full vertical-scrollbar scrollbar-lg">
|
||||
<div className="vertical-scrollbar flex scrollbar-lg h-full w-full flex-col">
|
||||
{DEFAULT_GLOBAL_VIEWS_LIST.filter((v) => t(v.i18n_label).toLowerCase().includes(query.toLowerCase())).map(
|
||||
(option) => (
|
||||
<GlobalDefaultViewListItem key={option.key} view={option} />
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ export default function SettingsLayout() {
|
|||
<div className="relative flex size-full overflow-hidden rounded-lg border border-subtle">
|
||||
<main className="relative flex size-full flex-col overflow-hidden">
|
||||
{/* Content */}
|
||||
<ContentWrapper className="md:flex w-full bg-surface-1">
|
||||
<ContentWrapper className="w-full bg-surface-1 md:flex">
|
||||
<div className="size-full overflow-hidden">
|
||||
<Outlet />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ function ExportsPage() {
|
|||
<SettingsContentWrapper header={<ExportsWorkspaceSettingsHeader />} hugging>
|
||||
<PageHead title={pageTitle} />
|
||||
<div
|
||||
className={cn("w-full flex flex-col gap-y-6", {
|
||||
className={cn("flex w-full flex-col gap-y-6", {
|
||||
"opacity-60": !canPerformWorkspaceMemberActions,
|
||||
})}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -43,12 +43,12 @@ const WorkspaceSettingLayout = observer(function WorkspaceSettingLayout({ params
|
|||
hamburgerContent={WorkspaceSettingsSidebarRoot}
|
||||
activePath={getWorkspaceActivePath(pathname) || ""}
|
||||
/>
|
||||
<div className="inset-y-0 flex flex-row w-full h-full">
|
||||
<div className="inset-y-0 flex h-full w-full flex-row">
|
||||
{workspaceUserInfo && !isAuthorized ? (
|
||||
<NotAuthorizedView section="settings" className="h-auto" />
|
||||
) : (
|
||||
<div className="relative flex size-full">
|
||||
<div className="h-full hidden md:block">
|
||||
<div className="hidden h-full md:block">
|
||||
<WorkspaceSettingsSidebarRoot />
|
||||
</div>
|
||||
<Outlet />
|
||||
|
|
|
|||
|
|
@ -113,11 +113,11 @@ const WorkspaceMembersSettingsPage = observer(function WorkspaceMembersSettingsP
|
|||
"opacity-60": !canPerformWorkspaceMemberActions,
|
||||
})}
|
||||
>
|
||||
<div className="flex justify-between gap-4 pb-3.5 items-center">
|
||||
<div className="flex items-center justify-between gap-4 pb-3.5">
|
||||
<h4 className="flex items-center gap-2.5 text-h3-medium">
|
||||
{t("workspace_settings.settings.members.title")}
|
||||
{workspaceMemberIds && workspaceMemberIds.length > 0 && (
|
||||
<CountChip count={workspaceMemberIds.length} className="h-5 m-auto" />
|
||||
<CountChip count={workspaceMemberIds.length} className="m-auto h-5" />
|
||||
)}
|
||||
</h4>
|
||||
<div className="flex items-center gap-2">
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ function WebhooksListPage({ params }: Route.ComponentProps) {
|
|||
</div>
|
||||
) : (
|
||||
<div className="flex h-full w-full flex-col">
|
||||
<div className="h-full w-full flex items-center justify-center">
|
||||
<div className="flex h-full w-full items-center justify-center">
|
||||
<EmptyStateCompact
|
||||
assetKey="webhook"
|
||||
title={t("settings_empty_state.webhooks.title")}
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ function ProjectDetailSettingsLayout({ params }: Route.ComponentProps) {
|
|||
hamburgerContent={(props) => <ProjectSettingsSidebarRoot {...props} projectId={projectId} />}
|
||||
activePath={getProjectActivePath(pathname) || ""}
|
||||
/>
|
||||
<div className="inset-y-0 flex flex-row w-full h-full">
|
||||
<div className="inset-y-0 flex h-full w-full flex-row">
|
||||
<div className="relative flex size-full">
|
||||
<div className="shrink-0 h-full hidden md:block">
|
||||
<div className="hidden h-full shrink-0 md:block">
|
||||
<ProjectSettingsSidebarRoot projectId={projectId} />
|
||||
</div>
|
||||
<ProjectAuthWrapper workspaceSlug={workspaceSlug} projectId={projectId}>
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ function ProjectSettingsPage() {
|
|||
// derived values
|
||||
const resolvedPath = resolvedTheme === "dark" ? ProjectDarkEmptyState : ProjectLightEmptyState;
|
||||
return (
|
||||
<div className="flex flex-col gap-4 items-center justify-center h-full max-w-[480px] mx-auto">
|
||||
<div className="mx-auto flex h-full max-w-[480px] flex-col items-center justify-center gap-4">
|
||||
<img src={resolvedPath} alt="No projects yet" />
|
||||
<div className="text-16 font-semibold text-tertiary">No projects yet</div>
|
||||
<div className="text-13 text-tertiary text-center">
|
||||
<div className="text-center text-13 text-tertiary">
|
||||
Projects act as the foundation for goal-driven work. They let you manage your teams, tasks, and everything you
|
||||
need to get things done.
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue