Initial commit: Plane
Some checks failed
Branch Build CE / Build Setup (push) Has been cancelled
Branch Build CE / Build-Push Admin Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Web Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Space Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Live Collaboration Docker Image (push) Has been cancelled
Branch Build CE / Build-Push API Server Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Proxy Docker Image (push) Has been cancelled
Branch Build CE / Build-Push AIO Docker Image (push) Has been cancelled
Branch Build CE / Upload Build Assets (push) Has been cancelled
Branch Build CE / Build Release (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Codespell / Check for spelling errors (push) Has been cancelled
Sync Repositories / sync_changes (push) Has been cancelled

Synced from upstream: 8853637e981ed7d8a6cff32bd98e7afe20f54362
This commit is contained in:
chuan
2025-11-07 00:00:52 +08:00
commit 8ebde8aa05
4886 changed files with 462270 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
"use client";
import React from "react";
import { observer } from "mobx-react";
import Image from "next/image";
// utils
import { cn } from "@plane/utils";
type EmptyStateSize = "sm" | "lg";
type Props = {
title: string;
description?: string;
assetPath?: string;
size?: EmptyStateSize;
};
const sizeConfig = {
sm: {
container: "size-24",
dimensions: 78,
},
lg: {
container: "size-28",
dimensions: 96,
},
} as const;
const getTitleClassName = (hasDescription: boolean) =>
cn("font-medium whitespace-pre-line", {
"text-sm text-custom-text-400": !hasDescription,
"text-lg text-custom-text-300": hasDescription,
});
export const SimpleEmptyState = observer((props: Props) => {
const { title, description, size = "sm", assetPath } = props;
return (
<div className="text-center flex flex-col gap-2.5 items-center">
{assetPath && (
<div className={sizeConfig[size].container}>
<Image
src={assetPath}
alt={title}
height={sizeConfig[size].dimensions}
width={sizeConfig[size].dimensions}
layout="responsive"
lazyBoundary="100%"
/>
</div>
)}
<h3 className={getTitleClassName(!!description)}>{title}</h3>
{description && <p className="text-base font-medium text-custom-text-400 whitespace-pre-line">{description}</p>}
</div>
);
});