Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { useRouter } from "next/navigation";
import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import { EmptyStateDetailed } from "@plane/propel/empty-state";
import { Tabs } from "@plane/propel/tabs";
import { Tab, Tabs, TabsList, TabsPanel } from "@makeplane/propel/components/tabs";
// components
import { cn } from "@plane/utils";
import AnalyticsFilterActions from "@/components/analytics/analytics-filter-actions";
Expand Down Expand Up @@ -73,45 +73,32 @@ function AnalyticsPage({ params }: Route.ComponentProps) {
<>
{workspaceProjectIds.length > 0 || loader === "init-loader" ? (
<div className="flex h-full overflow-hidden">
<Tabs value={selectedTab} onValueChange={handleTabChange} className="h-full w-full">
<Tabs variant="contained" value={selectedTab} onValueChange={handleTabChange}>
<div className={"flex h-full w-full flex-col"}>
<div
className={cn(
"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={"flex h-7 w-fit overflow-x-auto"}>
<TabsList>
{ANALYTICS_TABS.map((tab) => (
<Tabs.Trigger
key={tab.key}
value={tab.key}
disabled={tab.isDisabled}
size="md"
className="h-6 px-3"
onClick={() => {
if (!tab.isDisabled) {
handleTabChange(tab.key);
}
}}
>
{tab.label}
</Tabs.Trigger>
<Tab key={tab.key} value={tab.key} disabled={tab.isDisabled} label={tab.label} />
))}
</Tabs.List>
</TabsList>

<div className="flex-shrink-0">
<AnalyticsFilterActions />
</div>
</div>
{ANALYTICS_TABS.map((tab) => (
<Tabs.Content
key={tab.key}
value={tab.key}
className={"h-full overflow-hidden overflow-y-auto px-2"}
>
<tab.content />
</Tabs.Content>
))}
{/* Grid wrapper: Propel's TabsPanel omits className, so the single mounted panel
gets its fill height from a one-row grid instead. */}
<div className="grid min-h-0 w-full flex-1 grid-rows-1 overflow-x-hidden overflow-y-auto px-2">
{ANALYTICS_TABS.map((tab) => (
<TabsPanel key={tab.key} value={tab.key}>
<tab.content />
</TabsPanel>
))}
</div>
</div>
</Tabs>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ import { observer } from "mobx-react";
import { useRouter } from "next/navigation";
import useSWR from "swr";
// ui
import { Banner } from "@plane/propel/banner";
import { Button } from "@plane/propel/button";
import { Banner } from "@makeplane/propel/components/banner";
import { ArchiveOutline } from "@makeplane/propel/icons";
import { useTranslation } from "@plane/i18n";
import { Button } from "@plane/propel/button";
import { Loader } from "@plane/ui";
// components
import { PageHead } from "@/components/core/page-title";
Expand All @@ -27,6 +28,7 @@ function ArchivedIssueDetailsPage({ params }: Route.ComponentProps) {
const router = useRouter();
// states
// hooks
const { t } = useTranslation();
const {
fetchIssue,
issue: { getIssueById },
Expand Down Expand Up @@ -68,18 +70,18 @@ function ArchivedIssueDetailsPage({ params }: Route.ComponentProps) {
) : (
<>
<Banner
placement="page"
variant="warning"
title="This work item has been archived. Visit the Archives section to restore it."
icon={<ArchiveOutline className="size-4" />}
action={
title={t("issue.archive.banner_message")}
icon={<ArchiveOutline />}
actions={
<Button
variant="secondary"
onClick={() => router.push(`/${workspaceSlug}/projects/${projectId}/archives/issues/`)}
>
Go to archives
{t("issue.archive.go_to_archives")}
</Button>
}
className="border-b border-subtle"
/>
<div className="flex h-full overflow-hidden">
<div className="h-full w-full space-y-3 divide-y-2 divide-subtle-1 overflow-y-auto">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import { observer } from "mobx-react";
import useSWR from "swr";
// components
import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import { NotAuthorizedView } from "@/components/auth-screens/not-authorized-view";
import { PageHead } from "@/components/core/page-title";
import { SingleIntegrationCard } from "@/components/integration/single-integration-card";
import { IntegrationAndImportExportBanner } from "@/components/ui/integration-and-import-export-banner";
import { IntegrationsSettingsLoader } from "@/components/ui/loader/settings/integration";
// constants
import { APP_INTEGRATIONS } from "@plane/constants";
Expand All @@ -24,6 +24,8 @@ import { IntegrationService } from "@/services/integrations";
const integrationService = new IntegrationService();

function WorkspaceIntegrationsPage() {
// translation
const { t } = useTranslation();
// store hooks
const { currentWorkspace } = useWorkspace();
const { allowPermissions } = useUserPermissions();
Expand All @@ -41,7 +43,9 @@ function WorkspaceIntegrationsPage() {
<>
<PageHead title={pageTitle} />
<section className="w-full overflow-y-auto">
<IntegrationAndImportExportBanner bannerName="Integrations" />
<div className="flex items-start gap-3 border-b border-subtle py-3.5">
<h3 className="text-18 font-medium">{t("integrations.integrations")}</h3>
</div>
<div>
{appIntegrations ? (
appIntegrations.map((integration) => (
Expand Down
20 changes: 5 additions & 15 deletions apps/web/app/error/dev.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

// plane imports
import { isRouteErrorResponse } from "react-router";
import { Banner } from "@plane/propel/banner";
import { Banner } from "@makeplane/propel/components/banner";
import { InfoFilled } from "@makeplane/propel/icons";
import { Button } from "@plane/propel/button";
import { Card, ECardVariant } from "@plane/propel/card";
import { InfoFilled } from "@makeplane/propel/icons";

interface ErrorActionsProps {
onGoHome: () => void;
Expand Down Expand Up @@ -42,12 +42,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone
return (
<div className="flex min-h-screen items-start justify-center bg-surface-2 p-6 transition-none">
<div className="mt-12 w-full max-w-4xl space-y-4 transition-none">
<Banner
variant="error"
icon={<InfoFilled className="size-5" />}
title="Route Error Response"
animationDuration={0}
/>
<Banner placement="page" variant="danger" icon={<InfoFilled />} title="Route Error Response" />

<Card variant={ECardVariant.WITH_SHADOW} className="!p-6 transition-none">
<div className="space-y-4">
Expand Down Expand Up @@ -77,12 +72,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone
return (
<div className="flex min-h-screen items-start justify-center bg-surface-2 p-6 transition-none">
<div className="mt-12 w-full max-w-4xl space-y-4 transition-none">
<Banner
variant="error"
icon={<InfoFilled className="size-5" />}
title="Runtime Error"
animationDuration={0}
/>
<Banner placement="page" variant="danger" icon={<InfoFilled />} title="Runtime Error" />
<Card variant={ECardVariant.WITH_SHADOW} className="!p-6 transition-none">
<div className="space-y-4">
<div>
Expand Down Expand Up @@ -132,7 +122,7 @@ export function DevErrorComponent({ error, onGoHome, onReload }: DevErrorCompone
return (
<div className="flex min-h-screen items-start justify-center bg-surface-2 p-6 transition-none">
<div className="mt-12 w-full max-w-4xl space-y-4 transition-none">
<Banner variant="error" icon={<InfoFilled className="size-5" />} title="Unknown Error" animationDuration={0} />
<Banner placement="page" variant="danger" icon={<InfoFilled />} title="Unknown Error" />

<Card variant={ECardVariant.WITH_SHADOW} className="!p-6">
<div className="space-y-4">
Expand Down
43 changes: 0 additions & 43 deletions apps/web/core/components/account/auth-forms/auth-banner.tsx

This file was deleted.

10 changes: 8 additions & 2 deletions apps/web/core/components/account/auth-forms/auth-root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { useEffect, useState } from "react";
import { observer } from "mobx-react";
import { useSearchParams } from "next/navigation";
// plane imports
import { Banner } from "@makeplane/propel/components/banner";
import { OAuthOptions } from "@plane/ui";
// helpers
import type { TAuthErrorInfo } from "@/helpers/authentication.helper";
Expand All @@ -23,7 +24,6 @@ import { useOAuthConfig } from "@/hooks/oauth";
import { useInstance } from "@/hooks/store/use-instance";
// local imports
import { TermsAndConditions } from "../terms-and-conditions";
import { AuthBanner } from "./auth-banner";
import { AuthHeader, AuthHeaderBase } from "./auth-header";
import { AuthFormRoot } from "./form-root";

Expand Down Expand Up @@ -116,7 +116,13 @@ export const AuthRoot = observer(function AuthRoot(props: TAuthRoot) {
return (
<AuthContainer>
{errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && (
<AuthBanner message={errorInfo.message} handleBannerData={(value) => setErrorInfo(value)} />
<Banner
placement="inline"
variant="accent"
role="alert"
description={errorInfo.message}
onDismiss={() => setErrorInfo(undefined)}
/>
)}
<AuthHeader
workspaceSlug={workspaceSlug?.toString() || undefined}
Expand Down
24 changes: 8 additions & 16 deletions apps/web/core/components/account/auth-forms/password.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ import { useEffect, useMemo, useRef, useState } from "react";
import { observer } from "mobx-react";
import Link from "next/link";
// icons
import { CloseCircleOutline, CloseOutline, HideOutline, InfoOutline, ShowOutline } from "@makeplane/propel/icons";
import { CloseCircleOutline, HideOutline, ShowOutline } from "@makeplane/propel/icons";
// plane imports
import { Banner } from "@makeplane/propel/components/banner";
import { Input, InputGroup } from "@makeplane/propel/components/input";
import { API_BASE_URL, E_PASSWORD_STRENGTH } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
Expand Down Expand Up @@ -127,21 +128,12 @@ export const AuthPasswordForm = observer(function AuthPasswordForm(props: Props)
return (
<>
{isBannerMessage && mode === EAuthModes.SIGN_UP && (
<div className="relative flex items-center gap-2 rounded-md border border-danger-strong/50 bg-danger-subtle p-2">
<div className="relative flex h-4 w-4 shrink-0 items-center justify-center">
<InfoOutline width={16} height={16} className="text-danger-primary" />
</div>
<div className="w-full text-13 font-medium text-danger-primary">
{t("auth.sign_up.errors.password.strength")}
</div>
<button
type="button"
className="relative ml-auto flex h-6 w-6 cursor-pointer items-center justify-center rounded-xs text-accent-primary/80 transition-all hover:bg-danger-subtle-hover"
onClick={() => setBannerMessage(false)}
>
<CloseOutline className="h-4 w-4 shrink-0 text-danger-primary" />
</button>
</div>
<Banner
placement="inline"
variant="danger"
description={t("auth.sign_up.errors.password.strength")}
onDismiss={() => setBannerMessage(false)}
/>
)}
<form
ref={formRef}
Expand Down
10 changes: 8 additions & 2 deletions apps/web/core/components/account/auth-forms/reset-password.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { useSearchParams } from "next/navigation";
// icons
import { HideOutline, ShowOutline } from "@makeplane/propel/icons";
// ui
import { Banner } from "@makeplane/propel/components/banner";
import { Input, InputGroup } from "@makeplane/propel/components/input";
import { API_BASE_URL, E_PASSWORD_STRENGTH } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
Expand All @@ -23,7 +24,6 @@ import { EErrorAlertType, authErrorHandler } from "@/helpers/authentication.help
// services
import { AuthService } from "@/services/auth.service";
// local imports
import { AuthBanner } from "./auth-banner";
import { FormContainer } from "./common/container";
import { AuthFormHeader } from "./common/header";

Expand Down Expand Up @@ -103,7 +103,13 @@ export const ResetPasswordForm = observer(function ResetPasswordForm() {
<AuthFormHeader title="Reset password" description="Create a new password." />

{errorInfo && errorInfo?.type === EErrorAlertType.BANNER_ALERT && (
<AuthBanner message={errorInfo.message} handleBannerData={(value) => setErrorInfo(value)} />
<Banner
placement="inline"
variant="accent"
role="alert"
description={errorInfo.message}
onDismiss={() => setErrorInfo(undefined)}
/>
)}
<form
className="space-y-4"
Expand Down
23 changes: 15 additions & 8 deletions apps/web/core/components/api-token/modal/form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,14 @@ import { CalendarOutline } from "@makeplane/propel/icons";
// types
import { Field } from "@makeplane/propel/components/field";
import { Input, InputGroup } from "@makeplane/propel/components/input";
import { TextArea, TextAreaGroup } from "@makeplane/propel/components/text-area";
import { useTranslation } from "@plane/i18n";
import { Button } from "@plane/propel/button";
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import type { IApiToken } from "@plane/types";
// ui
import { Switch } from "@makeplane/propel/components/switch";
import { CustomSelect, TextArea } from "@plane/ui";
import { CustomSelect } from "@plane/ui";
import { cn, renderFormattedDate, renderFormattedTime } from "@plane/utils";
// components
import { DateDropdown } from "@/components/dropdowns/date";
Expand Down Expand Up @@ -166,13 +167,19 @@ export function CreateApiTokenForm(props: Props) {
control={control}
name="description"
render={({ field: { value, onChange } }) => (
<TextArea
value={value}
onChange={onChange}
hasError={Boolean(errors.description)}
placeholder={t("description")}
className="min-h-24 w-full resize-none text-14"
/>
<Field name="description" invalid={Boolean(errors.description)}>
<TextAreaGroup resize="none">
<TextArea
size="lg"
surface="field"
autoResize
maxRows={8}
value={value}
onChange={onChange}
placeholder={t("description")}
/>
</TextAreaGroup>
</Field>
)}
/>
<div className="flex items-center justify-between gap-2">
Expand Down
Loading
Loading