mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
chore: update background colors
This commit is contained in:
parent
92ab1ea164
commit
084669e658
@ -63,13 +63,13 @@ export const MentionList = forwardRef((props: MentionListProps, ref) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
return props.items && props.items.length !== 0 ? (
|
return props.items && props.items.length !== 0 ? (
|
||||||
<div className="mentions absolute max-h-40 w-48 space-y-0.5 overflow-y-auto rounded-md bg-custom-background-100 p-1 text-sm text-custom-text-300 shadow-custom-shadow-sm">
|
<div className="mentions absolute max-h-40 w-48 space-y-0.5 overflow-y-auto rounded-md bg-neutral-component-surface-light p-1 text-sm text-custom-text-300 shadow-custom-shadow-sm">
|
||||||
{props.items.length ? (
|
{props.items.length ? (
|
||||||
props.items.map((item, index) => (
|
props.items.map((item, index) => (
|
||||||
<div
|
<div
|
||||||
key={item.id}
|
key={item.id}
|
||||||
className={`flex cursor-pointer items-center gap-2 rounded p-1 hover:bg-custom-background-80 ${
|
className={`flex cursor-pointer items-center gap-2 rounded p-1 hover:bg-neutral-component-surface-dark ${
|
||||||
index === selectedIndex ? "bg-custom-background-80" : ""
|
index === selectedIndex ? "bg-neutral-component-surface-dark" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={() => selectItem(index)}
|
onClick={() => selectItem(index)}
|
||||||
>
|
>
|
||||||
|
@ -62,7 +62,7 @@ export const EditorHeader = (props: IEditorHeader) => {
|
|||||||
{isLocked && (
|
{isLocked && (
|
||||||
<AlertLabel
|
<AlertLabel
|
||||||
Icon={Lock}
|
Icon={Lock}
|
||||||
backgroundColor="bg-custom-background-80"
|
backgroundColor="bg-neutral-component-surface-dark"
|
||||||
textColor="text-custom-text-300"
|
textColor="text-custom-text-300"
|
||||||
label="Locked"
|
label="Locked"
|
||||||
/>
|
/>
|
||||||
|
@ -43,7 +43,7 @@ export const InfoPopover: React.FC<Props> = (props) => {
|
|||||||
</button>
|
</button>
|
||||||
{isPopoverOpen && (
|
{isPopoverOpen && (
|
||||||
<div
|
<div
|
||||||
className="z-10 w-64 space-y-2.5 rounded border-[0.5px] border-neutral-border-medium bg-custom-background-100 p-3 shadow-custom-shadow-rg"
|
className="z-10 w-64 space-y-2.5 rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light p-3 shadow-custom-shadow-rg"
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={infoPopoverStyles.popper}
|
style={infoPopoverStyles.popper}
|
||||||
{...infoPopoverAttributes.popper}
|
{...infoPopoverAttributes.popper}
|
||||||
|
@ -22,7 +22,7 @@ const InputView = ({
|
|||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}}
|
}}
|
||||||
className="w-[280px] outline-none bg-custom-background-90 text-custom-text-900 text-sm"
|
className="w-[280px] outline-none bg-neutral-component-surface-medium text-custom-text-900 text-sm"
|
||||||
defaultValue={defaultValue}
|
defaultValue={defaultValue}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
/>
|
/>
|
||||||
@ -122,7 +122,7 @@ export const LinkEditView = ({
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
onKeyDown={(e) => e.key === "Enter" && viewProps.closeLinkView()}
|
onKeyDown={(e) => e.key === "Enter" && viewProps.closeLinkView()}
|
||||||
className="shadow-md rounded p-2 flex flex-col gap-3 bg-custom-background-90 border-neutral-border-subtle border-2"
|
className="shadow-md rounded p-2 flex flex-col gap-3 bg-neutral-component-surface-medium border-neutral-border-subtle border-2"
|
||||||
>
|
>
|
||||||
<InputView
|
<InputView
|
||||||
label={"URL"}
|
label={"URL"}
|
||||||
|
@ -32,7 +32,7 @@ export const LinkPreview = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="absolute left-0 top-0 max-w-max">
|
<div className="absolute left-0 top-0 max-w-max">
|
||||||
<div className="shadow-md items-center rounded p-2 flex gap-3 bg-custom-background-90 border-neutral-border-subtle border-2 text-custom-text-300 text-xs">
|
<div className="shadow-md items-center rounded p-2 flex gap-3 bg-neutral-component-surface-medium border-neutral-border-subtle border-2 text-custom-text-300 text-xs">
|
||||||
<GlobeIcon size={14} className="inline-block" />
|
<GlobeIcon size={14} className="inline-block" />
|
||||||
<p>{url.length > 40 ? url.slice(0, 40) + "..." : url}</p>
|
<p>{url.length > 40 ? url.slice(0, 40) + "..." : url}</p>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
|
@ -42,7 +42,7 @@ export const SummaryPopover: React.FC<Props> = (props) => {
|
|||||||
</button>
|
</button>
|
||||||
{!sidePeekVisible && (
|
{!sidePeekVisible && (
|
||||||
<div
|
<div
|
||||||
className="z-10 hidden max-h-80 w-64 overflow-y-auto rounded border-[0.5px] border-neutral-border-medium bg-custom-background-100 p-3 shadow-custom-shadow-rg group-hover/summary-popover:block"
|
className="z-10 hidden max-h-80 w-64 overflow-y-auto rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light p-3 shadow-custom-shadow-rg group-hover/summary-popover:block"
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={summaryPopoverStyles.popper}
|
style={summaryPopoverStyles.popper}
|
||||||
{...summaryPopoverAttributes.popper}
|
{...summaryPopoverAttributes.popper}
|
||||||
|
@ -145,7 +145,7 @@ const IssueSuggestionList = ({
|
|||||||
<div
|
<div
|
||||||
id="issue-list-container"
|
id="issue-list-container"
|
||||||
ref={commandListContainer}
|
ref={commandListContainer}
|
||||||
className=" fixed z-[10] max-h-80 w-60 overflow-y-auto overflow-x-hidden rounded-md border border-neutral-border-subtle bg-custom-background-100 px-1 shadow-custom-shadow-xs transition-all"
|
className=" fixed z-[10] max-h-80 w-60 overflow-y-auto overflow-x-hidden rounded-md border border-neutral-border-subtle bg-neutral-component-surface-light px-1 shadow-custom-shadow-xs transition-all"
|
||||||
>
|
>
|
||||||
{sections.map((section) => {
|
{sections.map((section) => {
|
||||||
const sectionItems = displayedItems[section];
|
const sectionItems = displayedItems[section];
|
||||||
@ -155,7 +155,7 @@ const IssueSuggestionList = ({
|
|||||||
<div className={"flex h-full w-full flex-col"} key={`${section}-container`} id={`${section}-container`}>
|
<div className={"flex h-full w-full flex-col"} key={`${section}-container`} id={`${section}-container`}>
|
||||||
<h6
|
<h6
|
||||||
className={
|
className={
|
||||||
"sticky top-0 z-[10] bg-custom-background-100 px-2 py-1 text-xs font-medium text-custom-text-400"
|
"sticky top-0 z-[10] bg-neutral-component-surface-light px-2 py-1 text-xs font-medium text-custom-text-400"
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{section}
|
{section}
|
||||||
|
@ -14,7 +14,7 @@ export const IssueWidgetCard = (props) => (
|
|||||||
{props.node.attrs.project_identifier}-{props.node.attrs.sequence_id}
|
{props.node.attrs.project_identifier}-{props.node.attrs.sequence_id}
|
||||||
</h5>
|
</h5>
|
||||||
<div className="relative h-[71%]">
|
<div className="relative h-[71%]">
|
||||||
<div className="h-full backdrop-filter backdrop-blur-[30px] bg-custom-background-80 bg-opacity-30 flex items-center w-full justify-between gap-5 mt-2.5 pl-4 pr-5 py-3 max-md:max-w-full max-md:flex-wrap relative">
|
<div className="h-full backdrop-filter backdrop-blur-[30px] bg-neutral-component-surface-dark bg-opacity-30 flex items-center w-full justify-between gap-5 mt-2.5 pl-4 pr-5 py-3 max-md:max-w-full max-md:flex-wrap relative">
|
||||||
<div className="flex gap-2 items-center">
|
<div className="flex gap-2 items-center">
|
||||||
<div className="rounded">
|
<div className="rounded">
|
||||||
<Crown className="m-2" size={16} color="#FFBA18" />
|
<Crown className="m-2" size={16} color="#FFBA18" />
|
||||||
|
@ -85,9 +85,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-custom-background-80",
|
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -102,9 +102,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-custom-background-80",
|
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -123,9 +123,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-custom-background-80",
|
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -144,9 +144,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-custom-background-80",
|
"grid h-7 w-7 place-items-center rounded text-custom-text-300 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
|
@ -51,7 +51,7 @@ export const Tooltip: React.FC<Props> = ({
|
|||||||
content={
|
content={
|
||||||
<div
|
<div
|
||||||
className={`relative z-50 max-w-xs gap-1 rounded-md p-2 text-xs shadow-md ${
|
className={`relative z-50 max-w-xs gap-1 rounded-md p-2 text-xs shadow-md ${
|
||||||
theme === "custom" ? "bg-custom-background-100 text-custom-text-200" : "bg-black text-gray-400"
|
theme === "custom" ? "bg-neutral-component-surface-light text-custom-text-200" : "bg-black text-gray-400"
|
||||||
} overflow-hidden break-words ${className}`}
|
} overflow-hidden break-words ${className}`}
|
||||||
>
|
>
|
||||||
{tooltipHeading && (
|
{tooltipHeading && (
|
||||||
|
@ -92,6 +92,6 @@ Here is an example of how to use the `RichReadOnlyEditor` component
|
|||||||
```tsx
|
```tsx
|
||||||
<LiteReadOnlyEditor
|
<LiteReadOnlyEditor
|
||||||
value={comment.comment_html}
|
value={comment.comment_html}
|
||||||
customClassName="text-xs border border-neutral-border-medium bg-custom-background-100"
|
customClassName="text-xs border border-neutral-border-medium bg-neutral-component-surface-light"
|
||||||
/>
|
/>
|
||||||
```
|
```
|
||||||
|
@ -291,7 +291,7 @@ const CommandList = ({ items, command }: { items: CommandItemProps[]; command: a
|
|||||||
<div
|
<div
|
||||||
id="slash-command"
|
id="slash-command"
|
||||||
ref={commandListContainer}
|
ref={commandListContainer}
|
||||||
className="fixed z-50 h-auto max-h-[330px] w-52 overflow-y-auto rounded-md border border-neutral-border-medium bg-custom-background-100 px-1 py-2 shadow-md transition-all"
|
className="fixed z-50 h-auto max-h-[330px] w-52 overflow-y-auto rounded-md border border-neutral-border-medium bg-neutral-component-surface-light px-1 py-2 shadow-md transition-all"
|
||||||
>
|
>
|
||||||
{items.map((item, index) => (
|
{items.map((item, index) => (
|
||||||
<button
|
<button
|
||||||
|
@ -92,6 +92,6 @@ Here is an example of how to use the `RichReadOnlyEditor` component
|
|||||||
```tsx
|
```tsx
|
||||||
<LiteReadOnlyEditor
|
<LiteReadOnlyEditor
|
||||||
value={comment.comment_html}
|
value={comment.comment_html}
|
||||||
customClassName="text-xs border border-neutral-border-medium bg-custom-background-100"
|
customClassName="text-xs border border-neutral-border-medium bg-neutral-component-surface-light"
|
||||||
/>
|
/>
|
||||||
```
|
```
|
||||||
|
@ -101,8 +101,8 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => handleAccessChange(access.key)}
|
onClick={() => handleAccessChange(access.key)}
|
||||||
className={`grid aspect-square place-items-center rounded-sm p-1 hover:bg-custom-background-90 ${
|
className={`grid aspect-square place-items-center rounded-sm p-1 hover:bg-neutral-component-surface-medium ${
|
||||||
props.commentAccessSpecifier?.accessValue === access.key ? "bg-custom-background-90" : ""
|
props.commentAccessSpecifier?.accessValue === access.key ? "bg-neutral-component-surface-medium" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<access.icon
|
<access.icon
|
||||||
@ -118,7 +118,7 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="flex w-full items-stretch justify-between gap-2 rounded border-[0.5px] border-neutral-border-medium bg-custom-background-90 p-1">
|
<div className="flex w-full items-stretch justify-between gap-2 rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-medium p-1">
|
||||||
<div className="flex items-stretch">
|
<div className="flex items-stretch">
|
||||||
<div className="flex items-stretch gap-0.5 border-r border-neutral-border-medium pr-2.5">
|
<div className="flex items-stretch gap-0.5 border-r border-neutral-border-medium pr-2.5">
|
||||||
{basicTextFormattingItems.map((item) => (
|
{basicTextFormattingItems.map((item) => (
|
||||||
@ -127,9 +127,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-custom-background-80",
|
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -150,9 +150,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-custom-background-80",
|
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -173,9 +173,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-custom-background-80",
|
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -196,9 +196,9 @@ export const FixedMenu = (props: EditorBubbleMenuProps) => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={item.command}
|
onClick={item.command}
|
||||||
className={cn(
|
className={cn(
|
||||||
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-custom-background-80",
|
"grid aspect-square place-items-center rounded-sm p-1 text-custom-text-400 hover:bg-neutral-component-surface-dark",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80 text-custom-text-100": item.isActive(),
|
"bg-neutral-component-surface-dark text-custom-text-100": item.isActive(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
|
@ -94,7 +94,7 @@ export const EditorBubbleMenu: FC<EditorBubbleMenuProps> = (props: any) => {
|
|||||||
return (
|
return (
|
||||||
<BubbleMenu
|
<BubbleMenu
|
||||||
{...bubbleMenuProps}
|
{...bubbleMenuProps}
|
||||||
className="flex w-fit divide-x divide-neutral-border-medium rounded border border-neutral-border-medium bg-custom-background-100 shadow-xl"
|
className="flex w-fit divide-x divide-neutral-border-medium rounded border border-neutral-border-medium bg-neutral-component-surface-light shadow-xl"
|
||||||
>
|
>
|
||||||
{isSelecting ? null : (
|
{isSelecting ? null : (
|
||||||
<>
|
<>
|
||||||
|
@ -30,8 +30,8 @@ export const LinkSelector: FC<LinkSelectorProps> = ({ editor, isOpen, setIsOpen
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex h-full items-center space-x-2 px-3 py-1.5 text-sm font-medium text-custom-text-300 hover:bg-custom-background-100 active:bg-custom-background-100",
|
"flex h-full items-center space-x-2 px-3 py-1.5 text-sm font-medium text-custom-text-300 hover:bg-neutral-component-surface-light active:bg-neutral-component-surface-light",
|
||||||
{ "bg-custom-background-100": isOpen }
|
{ "bg-neutral-component-surface-light": isOpen }
|
||||||
)}
|
)}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setIsOpen(!isOpen);
|
setIsOpen(!isOpen);
|
||||||
@ -48,7 +48,7 @@ export const LinkSelector: FC<LinkSelectorProps> = ({ editor, isOpen, setIsOpen
|
|||||||
</button>
|
</button>
|
||||||
{isOpen && (
|
{isOpen && (
|
||||||
<div
|
<div
|
||||||
className="dow-xl fixed top-full z-[99999] mt-1 flex w-60 overflow-hidden rounded border border-neutral-border-medium bg-custom-background-100 animate-in fade-in slide-in-from-top-1"
|
className="dow-xl fixed top-full z-[99999] mt-1 flex w-60 overflow-hidden rounded border border-neutral-border-medium bg-neutral-component-surface-light animate-in fade-in slide-in-from-top-1"
|
||||||
onKeyDown={(e) => {
|
onKeyDown={(e) => {
|
||||||
if (e.key === "Enter") {
|
if (e.key === "Enter") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@ -60,7 +60,7 @@ export const LinkSelector: FC<LinkSelectorProps> = ({ editor, isOpen, setIsOpen
|
|||||||
ref={inputRef}
|
ref={inputRef}
|
||||||
type="url"
|
type="url"
|
||||||
placeholder="Paste a link"
|
placeholder="Paste a link"
|
||||||
className="flex-1 border-r border-neutral-border-medium bg-custom-background-100 p-1 text-sm outline-none placeholder:text-custom-text-400"
|
className="flex-1 border-r border-neutral-border-medium bg-neutral-component-surface-light p-1 text-sm outline-none placeholder:text-custom-text-400"
|
||||||
defaultValue={editor.getAttributes("link").href || ""}
|
defaultValue={editor.getAttributes("link").href || ""}
|
||||||
/>
|
/>
|
||||||
{editor.getAttributes("link").href ? (
|
{editor.getAttributes("link").href ? (
|
||||||
@ -76,7 +76,7 @@ export const LinkSelector: FC<LinkSelectorProps> = ({ editor, isOpen, setIsOpen
|
|||||||
</button>
|
</button>
|
||||||
) : (
|
) : (
|
||||||
<button
|
<button
|
||||||
className="flex items-center rounded-sm p-1 text-custom-text-300 transition-all hover:bg-custom-background-90"
|
className="flex items-center rounded-sm p-1 text-custom-text-300 transition-all hover:bg-neutral-component-surface-medium"
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
onLinkSubmit();
|
onLinkSubmit();
|
||||||
|
@ -55,7 +55,7 @@ export const NodeSelector: FC<NodeSelectorProps> = ({ editor, isOpen, setIsOpen
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
{isOpen && (
|
{isOpen && (
|
||||||
<section className="fixed top-full z-[99999] mt-1 flex w-48 flex-col overflow-hidden rounded border border-neutral-border-medium bg-custom-background-100 p-1 shadow-xl animate-in fade-in slide-in-from-top-1">
|
<section className="fixed top-full z-[99999] mt-1 flex w-48 flex-col overflow-hidden rounded border border-neutral-border-medium bg-neutral-component-surface-light p-1 shadow-xl animate-in fade-in slide-in-from-top-1">
|
||||||
{items.map((item) => (
|
{items.map((item) => (
|
||||||
<button
|
<button
|
||||||
key={item.name}
|
key={item.name}
|
||||||
|
@ -41,11 +41,13 @@ export const theme = {
|
|||||||
"onboarding-shadow-sm": "var(--color-onboarding-shadow-sm)",
|
"onboarding-shadow-sm": "var(--color-onboarding-shadow-sm)",
|
||||||
},
|
},
|
||||||
colors: {
|
colors: {
|
||||||
white: colors.white,
|
inherit: colors.inherit,
|
||||||
|
current: colors.current,
|
||||||
|
transparent: colors.transparent,
|
||||||
black: colors.black,
|
black: colors.black,
|
||||||
|
white: colors.white,
|
||||||
primary: {
|
primary: {
|
||||||
page: {
|
page: {
|
||||||
"surface-default": "var(--color-primary-0)",
|
|
||||||
"surface-light": "var(--color-primary-10)",
|
"surface-light": "var(--color-primary-10)",
|
||||||
"surface-medium": "var(--color-primary-20)",
|
"surface-medium": "var(--color-primary-20)",
|
||||||
},
|
},
|
||||||
@ -117,7 +119,6 @@ export const theme = {
|
|||||||
},
|
},
|
||||||
success: {
|
success: {
|
||||||
page: {
|
page: {
|
||||||
"surface-default": "var(--color-success-0)",
|
|
||||||
"surface-light": "var(--color-success-10)",
|
"surface-light": "var(--color-success-10)",
|
||||||
"surface-medium": "var(--color-success-20)",
|
"surface-medium": "var(--color-success-20)",
|
||||||
},
|
},
|
||||||
@ -153,7 +154,6 @@ export const theme = {
|
|||||||
},
|
},
|
||||||
warning: {
|
warning: {
|
||||||
page: {
|
page: {
|
||||||
"surface-default": "var(--color-warning-0)",
|
|
||||||
"surface-light": "var(--color-warning-10)",
|
"surface-light": "var(--color-warning-10)",
|
||||||
"surface-medium": "var(--color-warning-20)",
|
"surface-medium": "var(--color-warning-20)",
|
||||||
},
|
},
|
||||||
@ -189,7 +189,6 @@ export const theme = {
|
|||||||
},
|
},
|
||||||
danger: {
|
danger: {
|
||||||
page: {
|
page: {
|
||||||
"surface-default": "var(--color-danger-0)",
|
|
||||||
"surface-light": "var(--color-danger-10)",
|
"surface-light": "var(--color-danger-10)",
|
||||||
"surface-medium": "var(--color-danger-20)",
|
"surface-medium": "var(--color-danger-20)",
|
||||||
},
|
},
|
||||||
@ -225,7 +224,6 @@ export const theme = {
|
|||||||
},
|
},
|
||||||
info: {
|
info: {
|
||||||
page: {
|
page: {
|
||||||
"surface-default": "var(--color-info-0)",
|
|
||||||
"surface-light": "var(--color-info-10)",
|
"surface-light": "var(--color-info-10)",
|
||||||
"surface-medium": "var(--color-info-20)",
|
"surface-medium": "var(--color-info-20)",
|
||||||
},
|
},
|
||||||
|
@ -51,7 +51,7 @@ export const badgeStyling: IBadgeStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-custom-primary-60`,
|
disabled: `cursor-not-allowed !text-custom-primary-60`,
|
||||||
},
|
},
|
||||||
"outline-primary": {
|
"outline-primary": {
|
||||||
default: `text-custom-primary-100 bg-custom-background-100 border border-custom-primary-100`,
|
default: `text-custom-primary-100 bg-neutral-component-surface-light border border-custom-primary-100`,
|
||||||
hover: `hover:border-custom-primary-80 hover:bg-custom-primary-10`,
|
hover: `hover:border-custom-primary-80 hover:bg-custom-primary-10`,
|
||||||
disabled: `cursor-not-allowed !text-custom-primary-60 !border-custom-primary-60 `,
|
disabled: `cursor-not-allowed !text-custom-primary-60 !border-custom-primary-60 `,
|
||||||
},
|
},
|
||||||
@ -62,12 +62,12 @@ export const badgeStyling: IBadgeStyling = {
|
|||||||
disabled: `cursor-not-allowed bg-custom-border-200 !text-custom-text-400`,
|
disabled: `cursor-not-allowed bg-custom-border-200 !text-custom-text-400`,
|
||||||
},
|
},
|
||||||
"accent-neutral": {
|
"accent-neutral": {
|
||||||
default: `text-custom-text-200 bg-custom-background-80`,
|
default: `text-custom-text-200 bg-neutral-component-surface-dark`,
|
||||||
hover: `hover:bg-custom-border-200 hover:text-custom-text-100`,
|
hover: `hover:bg-custom-border-200 hover:text-custom-text-100`,
|
||||||
disabled: `cursor-not-allowed !text-custom-text-400`,
|
disabled: `cursor-not-allowed !text-custom-text-400`,
|
||||||
},
|
},
|
||||||
"outline-neutral": {
|
"outline-neutral": {
|
||||||
default: `text-custom-text-200 bg-custom-background-100 border border-neutral-border-medium`,
|
default: `text-custom-text-200 bg-neutral-component-surface-light border border-neutral-border-medium`,
|
||||||
hover: `hover:text-custom-text-100 hover:bg-custom-border-200`,
|
hover: `hover:text-custom-text-100 hover:bg-custom-border-200`,
|
||||||
disabled: `cursor-not-allowed !text-custom-text-400`,
|
disabled: `cursor-not-allowed !text-custom-text-400`,
|
||||||
},
|
},
|
||||||
@ -83,7 +83,7 @@ export const badgeStyling: IBadgeStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-green-300`,
|
disabled: `cursor-not-allowed !text-green-300`,
|
||||||
},
|
},
|
||||||
"outline-success": {
|
"outline-success": {
|
||||||
default: `text-green-500 bg-custom-background-100 border border-green-500`,
|
default: `text-green-500 bg-neutral-component-surface-light border border-green-500`,
|
||||||
hover: `hover:text-green-600 hover:bg-green-50`,
|
hover: `hover:text-green-600 hover:bg-green-50`,
|
||||||
disabled: `cursor-not-allowed !text-green-300 border-green-300`,
|
disabled: `cursor-not-allowed !text-green-300 border-green-300`,
|
||||||
},
|
},
|
||||||
@ -99,7 +99,7 @@ export const badgeStyling: IBadgeStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-amber-300`,
|
disabled: `cursor-not-allowed !text-amber-300`,
|
||||||
},
|
},
|
||||||
"outline-warning": {
|
"outline-warning": {
|
||||||
default: `text-amber-500 bg-custom-background-100 border border-amber-500`,
|
default: `text-amber-500 bg-neutral-component-surface-light border border-amber-500`,
|
||||||
hover: `hover:text-amber-600 hover:bg-amber-50`,
|
hover: `hover:text-amber-600 hover:bg-amber-50`,
|
||||||
disabled: `cursor-not-allowed !text-amber-300 border-amber-300`,
|
disabled: `cursor-not-allowed !text-amber-300 border-amber-300`,
|
||||||
},
|
},
|
||||||
@ -115,7 +115,7 @@ export const badgeStyling: IBadgeStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-red-300`,
|
disabled: `cursor-not-allowed !text-red-300`,
|
||||||
},
|
},
|
||||||
"outline-destructive": {
|
"outline-destructive": {
|
||||||
default: `text-red-500 bg-custom-background-100 border border-red-500`,
|
default: `text-red-500 bg-neutral-component-surface-light border border-red-500`,
|
||||||
hover: `hover:text-red-600 hover:bg-red-50`,
|
hover: `hover:text-red-600 hover:bg-red-50`,
|
||||||
disabled: `cursor-not-allowed !text-red-300 border-red-300`,
|
disabled: `cursor-not-allowed !text-red-300 border-red-300`,
|
||||||
},
|
},
|
||||||
|
@ -55,13 +55,13 @@ export const buttonStyling: IButtonStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-custom-primary-60 !border-custom-primary-60 `,
|
disabled: `cursor-not-allowed !text-custom-primary-60 !border-custom-primary-60 `,
|
||||||
},
|
},
|
||||||
"neutral-primary": {
|
"neutral-primary": {
|
||||||
default: `text-custom-text-200 bg-custom-background-100 border border-neutral-border-medium`,
|
default: `text-custom-text-200 bg-neutral-component-surface-light border border-neutral-border-medium`,
|
||||||
hover: `hover:bg-custom-background-90`,
|
hover: `hover:bg-neutral-component-surface-medium`,
|
||||||
pressed: `focus:text-custom-text-300 focus:bg-custom-background-90`,
|
pressed: `focus:text-custom-text-300 focus:bg-neutral-component-surface-medium`,
|
||||||
disabled: `cursor-not-allowed !text-custom-text-400`,
|
disabled: `cursor-not-allowed !text-custom-text-400`,
|
||||||
},
|
},
|
||||||
"link-primary": {
|
"link-primary": {
|
||||||
default: `text-custom-primary-100 bg-custom-background-100`,
|
default: `text-custom-primary-100 bg-neutral-component-surface-light`,
|
||||||
hover: `hover:text-custom-primary-200`,
|
hover: `hover:text-custom-primary-200`,
|
||||||
pressed: `focus:text-custom-primary-80 `,
|
pressed: `focus:text-custom-primary-80 `,
|
||||||
disabled: `cursor-not-allowed !text-custom-primary-60`,
|
disabled: `cursor-not-allowed !text-custom-primary-60`,
|
||||||
@ -86,13 +86,13 @@ export const buttonStyling: IButtonStyling = {
|
|||||||
disabled: `cursor-not-allowed !text-red-300 !border-red-300`,
|
disabled: `cursor-not-allowed !text-red-300 !border-red-300`,
|
||||||
},
|
},
|
||||||
"link-danger": {
|
"link-danger": {
|
||||||
default: `text-red-500 bg-custom-background-100`,
|
default: `text-red-500 bg-neutral-component-surface-light`,
|
||||||
hover: `hover:text-red-400`,
|
hover: `hover:text-red-400`,
|
||||||
pressed: `focus:text-red-400`,
|
pressed: `focus:text-red-400`,
|
||||||
disabled: `cursor-not-allowed !text-red-300`,
|
disabled: `cursor-not-allowed !text-red-300`,
|
||||||
},
|
},
|
||||||
"tertiary-danger": {
|
"tertiary-danger": {
|
||||||
default: `text-red-500 bg-custom-background-100 border border-red-200`,
|
default: `text-red-500 bg-neutral-component-surface-light border border-red-200`,
|
||||||
hover: `hover:bg-red-50 hover:border-red-300`,
|
hover: `hover:bg-red-50 hover:border-red-300`,
|
||||||
pressed: `focus:text-red-400`,
|
pressed: `focus:text-red-400`,
|
||||||
disabled: `cursor-not-allowed !text-red-300`,
|
disabled: `cursor-not-allowed !text-red-300`,
|
||||||
|
@ -33,7 +33,7 @@ const ToggleSwitch: React.FC<IToggleSwitchProps> = (props) => {
|
|||||||
} transform rounded-full shadow ring-0 transition duration-200 ease-in-out ${
|
} transform rounded-full shadow ring-0 transition duration-200 ease-in-out ${
|
||||||
value
|
value
|
||||||
? (size === "sm" ? "translate-x-3" : size === "md" ? "translate-x-4" : "translate-x-5") + " bg-white"
|
? (size === "sm" ? "translate-x-3" : size === "md" ? "translate-x-4" : "translate-x-5") + " bg-white"
|
||||||
: "translate-x-0.5 bg-custom-background-90"
|
: "translate-x-0.5 bg-neutral-component-surface-medium"
|
||||||
} ${disabled ? "cursor-not-allowed" : ""}`}
|
} ${disabled ? "cursor-not-allowed" : ""}`}
|
||||||
/>
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
|
@ -61,7 +61,7 @@ const CustomMenu = (props: ICustomMenuDropdownProps) => {
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-custom-background-100 px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
||||||
{
|
{
|
||||||
"max-h-60": maxHeight === "lg",
|
"max-h-60": maxHeight === "lg",
|
||||||
"max-h-48": maxHeight === "md",
|
"max-h-48": maxHeight === "md",
|
||||||
@ -120,7 +120,7 @@ const CustomMenu = (props: ICustomMenuDropdownProps) => {
|
|||||||
}}
|
}}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
className={`relative grid place-items-center rounded p-1 text-custom-text-200 outline-none hover:text-custom-text-100 ${
|
className={`relative grid place-items-center rounded p-1 text-custom-text-200 outline-none hover:text-custom-text-100 ${
|
||||||
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-custom-background-80"
|
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${buttonClassName}`}
|
} ${buttonClassName}`}
|
||||||
>
|
>
|
||||||
<MoreHorizontal className={`h-3.5 w-3.5 ${verticalEllipsis ? "rotate-90" : ""}`} />
|
<MoreHorizontal className={`h-3.5 w-3.5 ${verticalEllipsis ? "rotate-90" : ""}`} />
|
||||||
@ -132,11 +132,11 @@ const CustomMenu = (props: ICustomMenuDropdownProps) => {
|
|||||||
ref={setReferenceElement}
|
ref={setReferenceElement}
|
||||||
type="button"
|
type="button"
|
||||||
className={`flex items-center justify-between gap-1 whitespace-nowrap rounded-md px-2.5 py-1 text-xs duration-300 ${
|
className={`flex items-center justify-between gap-1 whitespace-nowrap rounded-md px-2.5 py-1 text-xs duration-300 ${
|
||||||
open ? "bg-custom-background-90 text-custom-text-100" : "text-custom-text-200"
|
open ? "bg-neutral-component-surface-medium text-custom-text-100" : "text-custom-text-200"
|
||||||
} ${noBorder ? "" : "border border-neutral-border-medium shadow-sm focus:outline-none"} ${
|
} ${noBorder ? "" : "border border-neutral-border-medium shadow-sm focus:outline-none"} ${
|
||||||
disabled
|
disabled
|
||||||
? "cursor-not-allowed text-custom-text-200"
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
: "cursor-pointer hover:bg-custom-background-80"
|
: "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${buttonClassName}`}
|
} ${buttonClassName}`}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
openDropdown();
|
openDropdown();
|
||||||
@ -167,7 +167,7 @@ const MenuItem: React.FC<ICustomMenuItemProps> = (props) => {
|
|||||||
className={cn(
|
className={cn(
|
||||||
"w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200",
|
"w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80": active,
|
"bg-neutral-component-surface-dark": active,
|
||||||
},
|
},
|
||||||
className
|
className
|
||||||
)}
|
)}
|
||||||
|
@ -88,7 +88,7 @@ export const CustomSearchSelect = (props: ICustomSearchSelectProps) => {
|
|||||||
className={`flex w-full items-center justify-between gap-1 text-xs ${
|
className={`flex w-full items-center justify-between gap-1 text-xs ${
|
||||||
disabled
|
disabled
|
||||||
? "cursor-not-allowed text-custom-text-200"
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
: "cursor-pointer hover:bg-custom-background-80"
|
: "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${customButtonClassName}`}
|
} ${customButtonClassName}`}
|
||||||
onClick={openDropdown}
|
onClick={openDropdown}
|
||||||
>
|
>
|
||||||
@ -105,7 +105,7 @@ export const CustomSearchSelect = (props: ICustomSearchSelectProps) => {
|
|||||||
} ${
|
} ${
|
||||||
disabled
|
disabled
|
||||||
? "cursor-not-allowed text-custom-text-200"
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
: "cursor-pointer hover:bg-custom-background-80"
|
: "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${buttonClassName}`}
|
} ${buttonClassName}`}
|
||||||
onClick={openDropdown}
|
onClick={openDropdown}
|
||||||
>
|
>
|
||||||
@ -118,14 +118,14 @@ export const CustomSearchSelect = (props: ICustomSearchSelectProps) => {
|
|||||||
<Combobox.Options className="fixed z-10" static>
|
<Combobox.Options className="fixed z-10" static>
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-custom-background-100 px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
||||||
optionsClassName
|
optionsClassName
|
||||||
)}
|
)}
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={styles.popper}
|
style={styles.popper}
|
||||||
{...attributes.popper}
|
{...attributes.popper}
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-1.5 rounded border border-neutral-border-subtle bg-custom-background-90 px-2">
|
<div className="flex items-center gap-1.5 rounded border border-neutral-border-subtle bg-neutral-component-surface-medium px-2">
|
||||||
<Search className="h-3.5 w-3.5 text-custom-text-400" strokeWidth={1.5} />
|
<Search className="h-3.5 w-3.5 text-custom-text-400" strokeWidth={1.5} />
|
||||||
<Combobox.Input
|
<Combobox.Input
|
||||||
className="w-full bg-transparent py-1 text-xs text-custom-text-200 placeholder:text-custom-text-400 focus:outline-none"
|
className="w-full bg-transparent py-1 text-xs text-custom-text-200 placeholder:text-custom-text-400 focus:outline-none"
|
||||||
@ -153,7 +153,7 @@ export const CustomSearchSelect = (props: ICustomSearchSelectProps) => {
|
|||||||
cn(
|
cn(
|
||||||
"w-full truncate flex items-center justify-between gap-2 rounded px-1 py-1.5 cursor-pointer select-none",
|
"w-full truncate flex items-center justify-between gap-2 rounded px-1 py-1.5 cursor-pointer select-none",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80": active,
|
"bg-neutral-component-surface-dark": active,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,9 @@ const CustomSelect = (props: ICustomSelectProps) => {
|
|||||||
ref={setReferenceElement}
|
ref={setReferenceElement}
|
||||||
type="button"
|
type="button"
|
||||||
className={`flex items-center justify-between gap-1 text-xs ${
|
className={`flex items-center justify-between gap-1 text-xs ${
|
||||||
disabled ? "cursor-not-allowed text-custom-text-200" : "cursor-pointer hover:bg-custom-background-80"
|
disabled
|
||||||
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
|
: "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${customButtonClassName}`}
|
} ${customButtonClassName}`}
|
||||||
onClick={openDropdown}
|
onClick={openDropdown}
|
||||||
>
|
>
|
||||||
@ -80,7 +82,9 @@ const CustomSelect = (props: ICustomSelectProps) => {
|
|||||||
className={`flex w-full items-center justify-between gap-1 rounded border-[0.5px] border-neutral-border-medium ${
|
className={`flex w-full items-center justify-between gap-1 rounded border-[0.5px] border-neutral-border-medium ${
|
||||||
input ? "px-3 py-2 text-sm" : "px-2 py-1 text-xs"
|
input ? "px-3 py-2 text-sm" : "px-2 py-1 text-xs"
|
||||||
} ${
|
} ${
|
||||||
disabled ? "cursor-not-allowed text-custom-text-200" : "cursor-pointer hover:bg-custom-background-80"
|
disabled
|
||||||
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
|
: "cursor-pointer hover:bg-neutral-component-surface-dark"
|
||||||
} ${buttonClassName}`}
|
} ${buttonClassName}`}
|
||||||
onClick={openDropdown}
|
onClick={openDropdown}
|
||||||
>
|
>
|
||||||
@ -94,7 +98,7 @@ const CustomSelect = (props: ICustomSelectProps) => {
|
|||||||
<Listbox.Options className="fixed z-10" onClick={() => closeDropdown()} static>
|
<Listbox.Options className="fixed z-10" onClick={() => closeDropdown()} static>
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-custom-background-100 px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
"my-1 overflow-y-scroll rounded-md border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light px-2 py-2.5 text-xs shadow-custom-shadow-rg focus:outline-none min-w-[12rem] whitespace-nowrap",
|
||||||
{
|
{
|
||||||
"max-h-60": maxHeight === "lg",
|
"max-h-60": maxHeight === "lg",
|
||||||
"max-h-48": maxHeight === "md",
|
"max-h-48": maxHeight === "md",
|
||||||
@ -124,7 +128,7 @@ const Option = (props: ICustomSelectItemProps) => {
|
|||||||
cn(
|
cn(
|
||||||
"cursor-pointer select-none truncate rounded px-1 py-1.5 text-custom-text-200",
|
"cursor-pointer select-none truncate rounded px-1 py-1.5 text-custom-text-200",
|
||||||
{
|
{
|
||||||
"bg-custom-background-80": active,
|
"bg-neutral-component-surface-dark": active,
|
||||||
},
|
},
|
||||||
className
|
className
|
||||||
)
|
)
|
||||||
|
@ -93,7 +93,7 @@ export const InputColorPicker: React.FC<InputColorPickerProps> = (props) => {
|
|||||||
>
|
>
|
||||||
<Popover.Panel>
|
<Popover.Panel>
|
||||||
<div
|
<div
|
||||||
className="z-10 overflow-hidden rounded border border-neutral-border-medium bg-custom-background-100 shadow-custom-shadow-rg"
|
className="z-10 overflow-hidden rounded border border-neutral-border-medium bg-neutral-component-surface-light shadow-custom-shadow-rg"
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={styles.popper}
|
style={styles.popper}
|
||||||
{...attributes.popper}
|
{...attributes.popper}
|
||||||
|
@ -17,7 +17,7 @@ type ItemProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const Item: React.FC<ItemProps> = ({ height = "auto", width = "auto" }) => (
|
const Item: React.FC<ItemProps> = ({ height = "auto", width = "auto" }) => (
|
||||||
<div className="rounded-md bg-custom-background-80" style={{ height: height, width: width }} />
|
<div className="rounded-md bg-neutral-component-surface-dark" style={{ height: height, width: width }} />
|
||||||
);
|
);
|
||||||
|
|
||||||
Loader.Item = Item;
|
Loader.Item = Item;
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
// helpers
|
||||||
|
import { cn } from "../../helpers";
|
||||||
|
|
||||||
export interface ISpinner extends React.SVGAttributes<SVGElement> {
|
export interface ISpinner extends React.SVGAttributes<SVGElement> {
|
||||||
height?: string;
|
height?: string;
|
||||||
@ -12,7 +14,7 @@ export const Spinner: React.FC<ISpinner> = ({ height = "32px", width = "32px", c
|
|||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
height={height}
|
height={height}
|
||||||
width={width}
|
width={width}
|
||||||
className={`animate-spin fill-blue-600 text-custom-text-200 ${className}`}
|
className={cn("animate-spin fill-primary-solid text-neutral-text-subtle", className)}
|
||||||
viewBox="0 0 100 101"
|
viewBox="0 0 100 101"
|
||||||
fill="none"
|
fill="none"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
@ -47,7 +47,7 @@ export const Tooltip: React.FC<ITooltipProps> = ({
|
|||||||
hoverCloseDelay={closeDelay}
|
hoverCloseDelay={closeDelay}
|
||||||
content={
|
content={
|
||||||
<div
|
<div
|
||||||
className={`relative z-50 max-w-xs gap-1 overflow-hidden break-words rounded-md bg-custom-background-100 p-2 text-xs text-custom-text-200 shadow-md ${className}`}
|
className={`relative z-50 max-w-xs gap-1 overflow-hidden break-words rounded-md bg-neutral-component-surface-light p-2 text-xs text-custom-text-200 shadow-md ${className}`}
|
||||||
>
|
>
|
||||||
{tooltipHeading && <h5 className="font-medium text-custom-text-100">{tooltipHeading}</h5>}
|
{tooltipHeading && <h5 className="font-medium text-custom-text-100">{tooltipHeading}</h5>}
|
||||||
{tooltipContent}
|
{tooltipContent}
|
||||||
|
@ -43,7 +43,7 @@ export const GitHubSignInButton: FC<Props> = (props) => {
|
|||||||
className="w-full"
|
className="w-full"
|
||||||
href={`https://github.com/login/oauth/authorize?client_id=${clientId}&redirect_uri=${loginCallBackURL}&scope=read:user,user:email`}
|
href={`https://github.com/login/oauth/authorize?client_id=${clientId}&redirect_uri=${loginCallBackURL}&scope=read:user,user:email`}
|
||||||
>
|
>
|
||||||
<button className="flex h-[46px] w-full items-center justify-center gap-2 rounded border border-neutral-border-medium p-2 text-sm font-medium text-custom-text-100 duration-300 hover:bg-custom-background-80">
|
<button className="flex h-[46px] w-full items-center justify-center gap-2 rounded border border-neutral-border-medium p-2 text-sm font-medium text-custom-text-100 duration-300 hover:bg-neutral-component-surface-dark">
|
||||||
<Image
|
<Image
|
||||||
src={theme === "dark" ? githubWhiteImage : githubBlackImage}
|
src={theme === "dark" ? githubWhiteImage : githubBlackImage}
|
||||||
height={20}
|
height={20}
|
||||||
|
@ -141,7 +141,7 @@ export const OnBoardingForm: React.FC<Props> = observer(({ user }) => {
|
|||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Listbox.Options
|
<Listbox.Options
|
||||||
className={`absolute left-0 z-10 mt-1 max-h-36 w-full origin-top-left overflow-y-auto rounded-md border border-neutral-border-medium bg-custom-background-90 text-xs shadow-lg focus:outline-none`}
|
className={`absolute left-0 z-10 mt-1 max-h-36 w-full origin-top-left overflow-y-auto rounded-md border border-neutral-border-medium bg-neutral-component-surface-medium text-xs shadow-lg focus:outline-none`}
|
||||||
>
|
>
|
||||||
<div className="space-y-1 p-2">
|
<div className="space-y-1 p-2">
|
||||||
{USER_ROLES.map((role) => (
|
{USER_ROLES.map((role) => (
|
||||||
@ -150,7 +150,7 @@ export const OnBoardingForm: React.FC<Props> = observer(({ user }) => {
|
|||||||
value={role.value}
|
value={role.value}
|
||||||
className={({ active, selected }) =>
|
className={({ active, selected }) =>
|
||||||
`cursor-pointer select-none truncate rounded px-1 py-1.5 ${
|
`cursor-pointer select-none truncate rounded px-1 py-1.5 ${
|
||||||
active || selected ? "bg-custom-background-80" : ""
|
active || selected ? "bg-neutral-component-surface-dark" : ""
|
||||||
} ${selected ? "text-custom-text-100" : "text-custom-text-200"}`
|
} ${selected ? "text-custom-text-100" : "text-custom-text-200"}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -25,7 +25,7 @@ export const UserLoggedIn = () => {
|
|||||||
<img src={user.avatar} alt={user.display_name ?? ""} className="rounded-full" />
|
<img src={user.avatar} alt={user.display_name ?? ""} className="rounded-full" />
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="grid h-5 w-5 place-items-center rounded-full bg-custom-background-80 text-[10px] capitalize">
|
<div className="grid h-5 w-5 place-items-center rounded-full bg-neutral-component-surface-dark text-[10px] capitalize">
|
||||||
{(user.display_name ?? "U")[0]}
|
{(user.display_name ?? "U")[0]}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@ -35,7 +35,7 @@ export const UserLoggedIn = () => {
|
|||||||
|
|
||||||
<div className="grid h-full w-full place-items-center p-6">
|
<div className="grid h-full w-full place-items-center p-6">
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<div className="mx-auto grid h-52 w-52 place-items-center rounded-full bg-custom-background-80">
|
<div className="mx-auto grid h-52 w-52 place-items-center rounded-full bg-neutral-component-surface-dark">
|
||||||
<div className="h-32 w-32">
|
<div className="h-32 w-32">
|
||||||
<Image src={UserLoggedInImage} alt="User already logged in" />
|
<Image src={UserLoggedInImage} alt="User already logged in" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -44,7 +44,7 @@ export const IssueKanBanBlock = observer(({ issue }: { issue: IIssue }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-1.5 space-y-2 rounded border-[0.5px] border-neutral-border-medium bg-custom-background-100 px-3 py-2 text-sm shadow-custom-shadow-2xs">
|
<div className="flex flex-col gap-1.5 space-y-2 rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-light px-3 py-2 text-sm shadow-custom-shadow-2xs">
|
||||||
{/* id */}
|
{/* id */}
|
||||||
<div className="break-words text-xs text-custom-text-300">
|
<div className="break-words text-xs text-custom-text-300">
|
||||||
{projectStore?.project?.identifier}-{issue?.sequence_id}
|
{projectStore?.project?.identifier}-{issue?.sequence_id}
|
||||||
|
@ -46,7 +46,7 @@ export const IssueListBlock: FC<{ issue: IIssue }> = observer((props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative flex items-center gap-10 bg-custom-background-100 p-3">
|
<div className="relative flex items-center gap-10 bg-neutral-component-surface-light p-3">
|
||||||
<div className="relative flex w-full flex-grow items-center gap-3 overflow-hidden">
|
<div className="relative flex w-full flex-grow items-center gap-3 overflow-hidden">
|
||||||
{/* id */}
|
{/* id */}
|
||||||
<div className="flex-shrink-0 text-xs font-medium text-custom-text-300">
|
<div className="flex-shrink-0 text-xs font-medium text-custom-text-300">
|
||||||
|
@ -27,7 +27,7 @@ export const IssueListView = observer(() => {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="bg-custom-background-100 p-3 text-sm text-custom-text-400">No issues.</div>
|
<div className="bg-neutral-component-surface-light p-3 text-sm text-custom-text-400">No issues.</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
@ -22,7 +22,7 @@ export const AppliedFiltersList: React.FC<Props> = (props) => {
|
|||||||
const { appliedFilters, handleRemoveAllFilters, handleRemoveFilter, states } = props;
|
const { appliedFilters, handleRemoveAllFilters, handleRemoveFilter, states } = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-wrap items-stretch gap-2 bg-custom-background-100">
|
<div className="flex flex-wrap items-stretch gap-2 bg-neutral-component-surface-light">
|
||||||
{Object.entries(appliedFilters).map(([key, value]) => {
|
{Object.entries(appliedFilters).map(([key, value]) => {
|
||||||
const filterKey = key as keyof IIssueFilterOptions;
|
const filterKey = key as keyof IIssueFilterOptions;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ export const AppliedLabelsFilters: React.FC<Props> = (props) => {
|
|||||||
if (!labelDetails) return null;
|
if (!labelDetails) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={labelId} className="flex items-center gap-1 rounded bg-custom-background-80 p-1 text-xs">
|
<div key={labelId} className="flex items-center gap-1 rounded bg-neutral-component-surface-dark p-1 text-xs">
|
||||||
<span
|
<span
|
||||||
className="h-1.5 w-1.5 rounded-full"
|
className="h-1.5 w-1.5 rounded-full"
|
||||||
style={{
|
style={{
|
||||||
|
@ -14,7 +14,7 @@ export const AppliedPriorityFilters: React.FC<Props> = (props) => {
|
|||||||
{values &&
|
{values &&
|
||||||
values.length > 0 &&
|
values.length > 0 &&
|
||||||
values.map((priority) => (
|
values.map((priority) => (
|
||||||
<div key={priority} className="flex items-center gap-1 rounded bg-custom-background-80 p-1 text-xs">
|
<div key={priority} className="flex items-center gap-1 rounded bg-neutral-component-surface-dark p-1 text-xs">
|
||||||
<PriorityIcon priority={priority as any} className={`h-3 w-3`} />
|
<PriorityIcon priority={priority as any} className={`h-3 w-3`} />
|
||||||
{priority}
|
{priority}
|
||||||
<button
|
<button
|
||||||
|
@ -21,7 +21,7 @@ export const AppliedStateFilters: React.FC<Props> = (props) => {
|
|||||||
if (!stateDetails) return null;
|
if (!stateDetails) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={stateId} className="flex items-center gap-1 rounded bg-custom-background-80 p-1 text-xs">
|
<div key={stateId} className="flex items-center gap-1 rounded bg-neutral-component-surface-dark p-1 text-xs">
|
||||||
<StateGroupIcon color={stateDetails.color} stateGroup={stateDetails.group} height="12px" width="12px" />
|
<StateGroupIcon color={stateDetails.color} stateGroup={stateDetails.group} height="12px" width="12px" />
|
||||||
{stateDetails.name}
|
{stateDetails.name}
|
||||||
<button
|
<button
|
||||||
|
@ -46,7 +46,7 @@ export const FiltersDropdown: React.FC<Props> = (props) => {
|
|||||||
>
|
>
|
||||||
<Popover.Panel>
|
<Popover.Panel>
|
||||||
<div
|
<div
|
||||||
className="z-10 overflow-hidden rounded border border-neutral-border-medium bg-custom-background-100 shadow-custom-shadow-rg"
|
className="z-10 overflow-hidden rounded border border-neutral-border-medium bg-neutral-component-surface-light shadow-custom-shadow-rg"
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={styles.popper}
|
style={styles.popper}
|
||||||
{...attributes.popper}
|
{...attributes.popper}
|
||||||
|
@ -9,11 +9,11 @@ interface IFilterHeader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const FilterHeader = ({ title, isPreviewEnabled, handleIsPreviewEnabled }: IFilterHeader) => (
|
export const FilterHeader = ({ title, isPreviewEnabled, handleIsPreviewEnabled }: IFilterHeader) => (
|
||||||
<div className="sticky top-0 flex items-center justify-between gap-2 bg-custom-background-100">
|
<div className="sticky top-0 flex items-center justify-between gap-2 bg-neutral-component-surface-light">
|
||||||
<div className="flex-grow truncate text-xs font-medium text-custom-text-300">{title}</div>
|
<div className="flex-grow truncate text-xs font-medium text-custom-text-300">{title}</div>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="grid h-5 w-5 flex-shrink-0 place-items-center rounded hover:bg-custom-background-80"
|
className="grid h-5 w-5 flex-shrink-0 place-items-center rounded hover:bg-neutral-component-surface-dark"
|
||||||
onClick={handleIsPreviewEnabled}
|
onClick={handleIsPreviewEnabled}
|
||||||
>
|
>
|
||||||
{isPreviewEnabled ? <ChevronUp size={14} /> : <ChevronDown size={14} />}
|
{isPreviewEnabled ? <ChevronUp size={14} /> : <ChevronDown size={14} />}
|
||||||
|
@ -16,11 +16,11 @@ export const FilterOption: React.FC<Props> = (props) => {
|
|||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex w-full items-center gap-2 rounded p-1.5 hover:bg-custom-background-80"
|
className="flex w-full items-center gap-2 rounded p-1.5 hover:bg-neutral-component-surface-dark"
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={`grid h-3 w-3 flex-shrink-0 place-items-center border bg-custom-background-90 ${
|
className={`grid h-3 w-3 flex-shrink-0 place-items-center border bg-neutral-component-surface-medium ${
|
||||||
isChecked ? "border-custom-primary-100 bg-custom-primary-100 text-white" : "border-neutral-border-medium"
|
isChecked ? "border-custom-primary-100 bg-custom-primary-100 text-white" : "border-neutral-border-medium"
|
||||||
} ${multiple ? "rounded-sm" : "rounded-full"}`}
|
} ${multiple ? "rounded-sm" : "rounded-full"}`}
|
||||||
>
|
>
|
||||||
|
@ -27,12 +27,12 @@ export const FilterSelection: React.FC<Props> = observer((props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex h-full w-full flex-col overflow-hidden">
|
<div className="flex h-full w-full flex-col overflow-hidden">
|
||||||
<div className="bg-custom-background-100 p-2.5 pb-0">
|
<div className="bg-neutral-component-surface-light p-2.5 pb-0">
|
||||||
<div className="flex items-center gap-1.5 rounded border-[0.5px] border-neutral-border-medium bg-custom-background-90 px-1.5 py-1 text-xs">
|
<div className="flex items-center gap-1.5 rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-medium px-1.5 py-1 text-xs">
|
||||||
<Search className="text-custom-text-400" size={12} strokeWidth={2} />
|
<Search className="text-custom-text-400" size={12} strokeWidth={2} />
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="w-full bg-custom-background-90 outline-none placeholder:text-custom-text-400"
|
className="w-full bg-neutral-component-surface-medium outline-none placeholder:text-custom-text-400"
|
||||||
placeholder="Search"
|
placeholder="Search"
|
||||||
value={filtersSearchQuery}
|
value={filtersSearchQuery}
|
||||||
onChange={(e) => setFiltersSearchQuery(e.target.value)}
|
onChange={(e) => setFiltersSearchQuery(e.target.value)}
|
||||||
|
@ -30,8 +30,8 @@ export const NavbarIssueBoardView = observer(() => {
|
|||||||
key={viewKey}
|
key={viewKey}
|
||||||
className={`flex h-[28px] w-[28px] cursor-pointer items-center justify-center rounded-sm ${
|
className={`flex h-[28px] w-[28px] cursor-pointer items-center justify-center rounded-sm ${
|
||||||
viewKey === activeBoard
|
viewKey === activeBoard
|
||||||
? `bg-custom-background-80 text-custom-text-200`
|
? `bg-neutral-component-surface-dark text-custom-text-200`
|
||||||
: `text-custom-text-300 hover:bg-custom-background-80`
|
: `text-custom-text-300 hover:bg-neutral-component-surface-dark`
|
||||||
}`}
|
}`}
|
||||||
onClick={() => handleCurrentBoardView(viewKey)}
|
onClick={() => handleCurrentBoardView(viewKey)}
|
||||||
title={viewKey}
|
title={viewKey}
|
||||||
|
@ -24,7 +24,7 @@ export const NavbarTheme = observer(() => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={handleTheme}
|
onClick={handleTheme}
|
||||||
className="relative grid h-7 w-7 place-items-center rounded bg-custom-background-100 text-custom-text-100 hover:bg-custom-background-80"
|
className="relative grid h-7 w-7 place-items-center rounded bg-neutral-component-surface-light text-custom-text-100 hover:bg-neutral-component-surface-dark"
|
||||||
>
|
>
|
||||||
<span className="material-symbols-rounded text-sm">{appTheme === "light" ? "dark_mode" : "light_mode"}</span>
|
<span className="material-symbols-rounded text-sm">{appTheme === "light" ? "dark_mode" : "light_mode"}</span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -82,7 +82,7 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<span className="absolute -bottom-0.5 -right-1 rounded-tl bg-custom-background-80 px-0.5 py-px">
|
<span className="absolute -bottom-0.5 -right-1 rounded-tl bg-neutral-component-surface-dark px-0.5 py-px">
|
||||||
<MessageSquare className="h-3 w-3 text-custom-text-200" aria-hidden="true" strokeWidth={2} />
|
<MessageSquare className="h-3 w-3 text-custom-text-200" aria-hidden="true" strokeWidth={2} />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -143,7 +143,7 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
<LiteReadOnlyEditorWithRef
|
<LiteReadOnlyEditorWithRef
|
||||||
ref={showEditorRef}
|
ref={showEditorRef}
|
||||||
value={comment.comment_html}
|
value={comment.comment_html}
|
||||||
customClassName="text-xs border border-neutral-border-medium bg-custom-background-100"
|
customClassName="text-xs border border-neutral-border-medium bg-neutral-component-surface-light"
|
||||||
mentionHighlights={mentionsConfig.mentionHighlights}
|
mentionHighlights={mentionsConfig.mentionHighlights}
|
||||||
/>
|
/>
|
||||||
<CommentReactions commentId={comment.id} projectId={comment.project} />
|
<CommentReactions commentId={comment.id} projectId={comment.project} />
|
||||||
@ -156,7 +156,7 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
<Menu.Button
|
<Menu.Button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => {}}
|
onClick={() => {}}
|
||||||
className="relative grid cursor-pointer place-items-center rounded p-1 text-custom-text-200 outline-none hover:bg-custom-background-80 hover:text-custom-text-100"
|
className="relative grid cursor-pointer place-items-center rounded p-1 text-custom-text-200 outline-none hover:bg-neutral-component-surface-dark hover:text-custom-text-100"
|
||||||
>
|
>
|
||||||
<MoreVertical className="h-4 w-4 text-custom-text-200 duration-300" strokeWidth={2} />
|
<MoreVertical className="h-4 w-4 text-custom-text-200 duration-300" strokeWidth={2} />
|
||||||
</Menu.Button>
|
</Menu.Button>
|
||||||
@ -170,7 +170,7 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
leaveFrom="transform opacity-100 scale-100"
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Menu.Items className="absolute right-0 z-10 mt-1 max-h-36 min-w-[8rem] origin-top-right overflow-auto overflow-y-scroll whitespace-nowrap rounded-md border border-neutral-border-medium bg-custom-background-90 p-1 text-xs shadow-lg focus:outline-none">
|
<Menu.Items className="absolute right-0 z-10 mt-1 max-h-36 min-w-[8rem] origin-top-right overflow-auto overflow-y-scroll whitespace-nowrap rounded-md border border-neutral-border-medium bg-neutral-component-surface-medium p-1 text-xs shadow-lg focus:outline-none">
|
||||||
<Menu.Item>
|
<Menu.Item>
|
||||||
{({ active }) => (
|
{({ active }) => (
|
||||||
<div className="py-1">
|
<div className="py-1">
|
||||||
@ -179,8 +179,8 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
setIsEditing(true);
|
setIsEditing(true);
|
||||||
}}
|
}}
|
||||||
className={`w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200 hover:bg-custom-background-80 ${
|
className={`w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200 hover:bg-neutral-component-surface-dark ${
|
||||||
active ? "bg-custom-background-80" : ""
|
active ? "bg-neutral-component-surface-dark" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
@ -194,8 +194,8 @@ export const CommentCard: React.FC<Props> = observer((props) => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={handleDelete}
|
onClick={handleDelete}
|
||||||
className={`w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200 hover:bg-custom-background-80 ${
|
className={`w-full select-none truncate rounded px-1 py-1.5 text-left text-custom-text-200 hover:bg-neutral-component-surface-dark ${
|
||||||
active ? "bg-custom-background-80" : ""
|
active ? "bg-neutral-component-surface-dark" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
Delete
|
Delete
|
||||||
|
@ -108,7 +108,7 @@ export const CommentReactions: React.FC<Props> = observer((props) => {
|
|||||||
(r) => r.actor_detail.id === userStore.currentUser?.id && r.reaction === reaction
|
(r) => r.actor_detail.id === userStore.currentUser?.id && r.reaction === reaction
|
||||||
)
|
)
|
||||||
? "bg-custom-primary-100/10"
|
? "bg-custom-primary-100/10"
|
||||||
: "bg-custom-background-80"
|
: "bg-neutral-component-surface-dark"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<span>{renderEmoji(reaction)}</span>
|
<span>{renderEmoji(reaction)}</span>
|
||||||
|
@ -88,7 +88,7 @@ export const PeekOverviewHeader: React.FC<Props> = observer((props) => {
|
|||||||
leaveFrom="transform opacity-100 scale-100"
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Listbox.Options className="absolute left-0 z-10 mt-1 min-w-[8rem] origin-top-left overflow-y-auto whitespace-nowrap rounded-md border border-neutral-border-medium bg-custom-background-90 text-xs shadow-lg focus:outline-none">
|
<Listbox.Options className="absolute left-0 z-10 mt-1 min-w-[8rem] origin-top-left overflow-y-auto whitespace-nowrap rounded-md border border-neutral-border-medium bg-neutral-component-surface-medium text-xs shadow-lg focus:outline-none">
|
||||||
<div className="space-y-1 p-2">
|
<div className="space-y-1 p-2">
|
||||||
{peekModes.map((mode) => (
|
{peekModes.map((mode) => (
|
||||||
<Listbox.Option
|
<Listbox.Option
|
||||||
@ -96,7 +96,7 @@ export const PeekOverviewHeader: React.FC<Props> = observer((props) => {
|
|||||||
value={mode.key}
|
value={mode.key}
|
||||||
className={({ active, selected }) =>
|
className={({ active, selected }) =>
|
||||||
`cursor-pointer select-none truncate rounded px-1 py-1.5 ${
|
`cursor-pointer select-none truncate rounded px-1 py-1.5 ${
|
||||||
active || selected ? "bg-custom-background-80" : ""
|
active || selected ? "bg-neutral-component-surface-dark" : ""
|
||||||
} ${selected ? "text-custom-text-100" : "text-custom-text-200"}`
|
} ${selected ? "text-custom-text-100" : "text-custom-text-200"}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -50,7 +50,7 @@ export const PeekOverviewIssueActivity: React.FC<Props> = observer(() => {
|
|||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<div className="mt-4 flex items-center justify-between gap-2 rounded border border-neutral-border-medium bg-custom-background-80 px-2 py-2.5">
|
<div className="mt-4 flex items-center justify-between gap-2 rounded border border-neutral-border-medium bg-neutral-component-surface-dark px-2 py-2.5">
|
||||||
<p className="flex gap-2 overflow-hidden break-words text-sm text-custom-text-200">
|
<p className="flex gap-2 overflow-hidden break-words text-sm text-custom-text-200">
|
||||||
<Icon iconName="lock" className="!text-sm" />
|
<Icon iconName="lock" className="!text-sm" />
|
||||||
Sign in to add your comment
|
Sign in to add your comment
|
||||||
|
@ -87,7 +87,7 @@ export const IssueEmojiReactions: React.FC = observer(() => {
|
|||||||
className={`flex h-full items-center gap-1 rounded-md px-2 py-1 text-sm text-custom-text-100 ${
|
className={`flex h-full items-center gap-1 rounded-md px-2 py-1 text-sm text-custom-text-100 ${
|
||||||
reactions?.some((r) => r.actor_detail.id === user?.id && r.reaction === reaction)
|
reactions?.some((r) => r.actor_detail.id === user?.id && r.reaction === reaction)
|
||||||
? "bg-custom-primary-100/10"
|
? "bg-custom-primary-100/10"
|
||||||
: "bg-custom-background-80"
|
: "bg-neutral-component-surface-dark"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<span>{renderEmoji(reaction)}</span>
|
<span>{renderEmoji(reaction)}</span>
|
||||||
|
@ -63,7 +63,7 @@ export const PeekOverviewIssueProperties: React.FC<Props> = ({ issueDetails, mod
|
|||||||
</div>
|
</div>
|
||||||
<div className="w-3/4">
|
<div className="w-3/4">
|
||||||
{stateGroup && (
|
{stateGroup && (
|
||||||
<div className="inline-flex rounded bg-custom-background-80 px-2.5 py-0.5 text-sm">
|
<div className="inline-flex rounded bg-neutral-component-surface-dark px-2.5 py-0.5 text-sm">
|
||||||
<div className="flex items-center gap-1.5 text-left text-custom-text-100">
|
<div className="flex items-center gap-1.5 text-left text-custom-text-100">
|
||||||
<StateGroupIcon stateGroup={state.group} color={state.color} />
|
<StateGroupIcon stateGroup={state.group} color={state.color} />
|
||||||
{addSpaceIfCamelCase(state?.name ?? "")}
|
{addSpaceIfCamelCase(state?.name ?? "")}
|
||||||
@ -89,7 +89,7 @@ export const PeekOverviewIssueProperties: React.FC<Props> = ({ issueDetails, mod
|
|||||||
? "border-yellow-500/20 bg-yellow-500/20 text-yellow-500"
|
? "border-yellow-500/20 bg-yellow-500/20 text-yellow-500"
|
||||||
: priority?.key === "low"
|
: priority?.key === "low"
|
||||||
? "border-green-500/20 bg-green-500/20 text-green-500"
|
? "border-green-500/20 bg-green-500/20 text-green-500"
|
||||||
: "border-neutral-border-medium bg-custom-background-80"
|
: "border-neutral-border-medium bg-neutral-component-surface-dark"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{priority && (
|
{priority && (
|
||||||
@ -108,7 +108,7 @@ export const PeekOverviewIssueProperties: React.FC<Props> = ({ issueDetails, mod
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{issueDetails.target_date ? (
|
{issueDetails.target_date ? (
|
||||||
<div className="flex h-6 items-center gap-1 rounded border border-neutral-border-subtle bg-custom-background-80 px-2.5 py-1 text-xs text-custom-text-100">
|
<div className="flex h-6 items-center gap-1 rounded border border-neutral-border-subtle bg-neutral-component-surface-dark px-2.5 py-1 text-xs text-custom-text-100">
|
||||||
<span className={`material-symbols-rounded -my-0.5 text-sm ${dueDateIcon.className}`}>
|
<span className={`material-symbols-rounded -my-0.5 text-sm ${dueDateIcon.className}`}>
|
||||||
{dueDateIcon.iconName}
|
{dueDateIcon.iconName}
|
||||||
</span>
|
</span>
|
||||||
|
@ -81,7 +81,7 @@ export const IssuePeekOverview: React.FC<Props> = observer(() => {
|
|||||||
leaveFrom="translate-x-0"
|
leaveFrom="translate-x-0"
|
||||||
leaveTo="translate-x-full"
|
leaveTo="translate-x-full"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="fixed right-0 top-0 z-20 h-full w-1/2 bg-custom-background-100 shadow-custom-shadow-sm">
|
<Dialog.Panel className="fixed right-0 top-0 z-20 h-full w-1/2 bg-neutral-component-surface-light shadow-custom-shadow-sm">
|
||||||
<SidePeekView handleClose={handleClose} issueDetails={issueDetails} />
|
<SidePeekView handleClose={handleClose} issueDetails={issueDetails} />
|
||||||
</Dialog.Panel>
|
</Dialog.Panel>
|
||||||
</Transition.Child>
|
</Transition.Child>
|
||||||
@ -111,7 +111,7 @@ export const IssuePeekOverview: React.FC<Props> = observer(() => {
|
|||||||
>
|
>
|
||||||
<Dialog.Panel>
|
<Dialog.Panel>
|
||||||
<div
|
<div
|
||||||
className={`fixed left-1/2 top-1/2 z-20 -translate-x-1/2 -translate-y-1/2 rounded-lg bg-custom-background-100 shadow-custom-shadow-xl transition-all duration-300 ${
|
className={`fixed left-1/2 top-1/2 z-20 -translate-x-1/2 -translate-y-1/2 rounded-lg bg-neutral-component-surface-light shadow-custom-shadow-xl transition-all duration-300 ${
|
||||||
issueDetailStore.peekMode === "modal" ? "h-[70%] w-3/5" : "h-[95%] w-[95%]"
|
issueDetailStore.peekMode === "modal" ? "h-[70%] w-3/5" : "h-[95%] w-[95%]"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
|
@ -52,7 +52,7 @@ const DropdownList: React.FC<DropDownListProps> = (props) => {
|
|||||||
>
|
>
|
||||||
<Popover.Panel
|
<Popover.Panel
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className="absolute left-1/2 z-10 mt-1 max-w-[9rem] origin-top-right -translate-x-full select-none rounded-md border border-neutral-border-medium bg-custom-background-90 text-xs shadow-lg focus:outline-none"
|
className="absolute left-1/2 z-10 mt-1 max-w-[9rem] origin-top-right -translate-x-full select-none rounded-md border border-neutral-border-medium bg-neutral-component-surface-medium text-xs shadow-lg focus:outline-none"
|
||||||
>
|
>
|
||||||
<div className="w-full rounded-md text-sm shadow-lg">
|
<div className="w-full rounded-md text-sm shadow-lg">
|
||||||
{items.map((item, index) => (
|
{items.map((item, index) => (
|
||||||
@ -83,8 +83,8 @@ const DropdownItem: React.FC<DropdownItemProps> = (props) => {
|
|||||||
}
|
}
|
||||||
setOpen((prev) => !prev);
|
setOpen((prev) => !prev);
|
||||||
}}
|
}}
|
||||||
className={`flex w-full items-center gap-1 rounded px-1 py-1.5 text-custom-text-200 hover:bg-custom-background-80 ${
|
className={`flex w-full items-center gap-1 rounded px-1 py-1.5 text-custom-text-200 hover:bg-neutral-component-surface-dark ${
|
||||||
isSelected ? "bg-custom-background-80" : ""
|
isSelected ? "bg-neutral-component-surface-dark" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{children && <ChevronLeft className="h-4 w-4 transform transition-transform" strokeWidth={2} />}
|
{children && <ChevronLeft className="h-4 w-4 transform transition-transform" strokeWidth={2} />}
|
||||||
@ -109,8 +109,8 @@ const Dropdown: React.FC<DropdownProps> = (props) => {
|
|||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Popover.Button
|
<Popover.Button
|
||||||
className={`group flex items-center justify-between gap-2 rounded-md border border-neutral-border-medium px-3 py-1.5 text-xs shadow-sm duration-300 hover:bg-custom-background-90 hover:text-custom-text-100 focus:outline-none ${
|
className={`group flex items-center justify-between gap-2 rounded-md border border-neutral-border-medium px-3 py-1.5 text-xs shadow-sm duration-300 hover:bg-neutral-component-surface-medium hover:text-custom-text-100 focus:outline-none ${
|
||||||
open ? "bg-custom-background-90 text-custom-text-100" : "text-custom-text-200"
|
open ? "bg-neutral-component-surface-medium text-custom-text-100" : "text-custom-text-200"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{typeof button === "function" ? button() : button}
|
{typeof button === "function" ? button() : button}
|
||||||
@ -125,7 +125,7 @@ const Dropdown: React.FC<DropdownProps> = (props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0"
|
leaveFrom="opacity-100 translate-y-0"
|
||||||
leaveTo="opacity-0 translate-y-1"
|
leaveTo="opacity-0 translate-y-1"
|
||||||
>
|
>
|
||||||
<Popover.Panel className="absolute left-full z-10 mt-1 w-36 origin-top-right -translate-x-full select-none rounded-md border border-neutral-border-medium bg-custom-background-90 text-xs shadow-lg focus:outline-none">
|
<Popover.Panel className="absolute left-full z-10 mt-1 w-36 origin-top-right -translate-x-full select-none rounded-md border border-neutral-border-medium bg-neutral-component-surface-medium text-xs shadow-lg focus:outline-none">
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
{items.map((item, index) => (
|
{items.map((item, index) => (
|
||||||
<DropdownItem key={index} item={item} />
|
<DropdownItem key={index} item={item} />
|
||||||
|
@ -28,7 +28,7 @@ export const ReactionSelector: React.FC<Props> = (props) => {
|
|||||||
<Popover.Button
|
<Popover.Button
|
||||||
className={`${
|
className={`${
|
||||||
open ? "" : "text-opacity-90"
|
open ? "" : "text-opacity-90"
|
||||||
} group inline-flex items-center rounded-md bg-custom-background-80 focus:outline-none`}
|
} group inline-flex items-center rounded-md bg-neutral-component-surface-dark focus:outline-none`}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className={`flex items-center justify-center rounded-md px-2 ${
|
className={`flex items-center justify-center rounded-md px-2 ${
|
||||||
@ -48,11 +48,11 @@ export const ReactionSelector: React.FC<Props> = (props) => {
|
|||||||
leaveTo="opacity-0 translate-y-1"
|
leaveTo="opacity-0 translate-y-1"
|
||||||
>
|
>
|
||||||
<Popover.Panel
|
<Popover.Panel
|
||||||
className={`absolute -left-2 z-10 bg-custom-sidebar-background-100 ${
|
className={`absolute -left-2 z-10 bg-sidebar-neutral-component-surface-light ${
|
||||||
position === "top" ? "-top-12" : "-bottom-12"
|
position === "top" ? "-top-12" : "-bottom-12"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-sidebar-background-100 p-1 shadow-custom-shadow-sm">
|
<div className="rounded-md border border-neutral-border-medium bg-sidebar-neutral-component-surface-light p-1 shadow-custom-shadow-sm">
|
||||||
<div className="flex gap-x-1">
|
<div className="flex gap-x-1">
|
||||||
{reactionEmojis.map((emoji) => (
|
{reactionEmojis.map((emoji) => (
|
||||||
<button
|
<button
|
||||||
@ -63,7 +63,9 @@ export const ReactionSelector: React.FC<Props> = (props) => {
|
|||||||
closePopover();
|
closePopover();
|
||||||
}}
|
}}
|
||||||
className={`grid select-none place-items-center rounded-md p-1 text-sm ${
|
className={`grid select-none place-items-center rounded-md p-1 text-sm ${
|
||||||
selected.includes(emoji) ? "bg-custom-primary-100/10" : "hover:bg-custom-sidebar-background-80"
|
selected.includes(emoji)
|
||||||
|
? "bg-custom-primary-100/10"
|
||||||
|
: "hover:bg-sidebar-neutral-component-surface-dark"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{renderEmoji(emoji)}
|
{renderEmoji(emoji)}
|
||||||
|
@ -61,7 +61,7 @@ export const ProjectDetailsView = observer(() => {
|
|||||||
{issueStore?.error ? (
|
{issueStore?.error ? (
|
||||||
<div className="grid h-full w-full place-items-center p-6">
|
<div className="grid h-full w-full place-items-center p-6">
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<div className="mx-auto grid h-52 w-52 place-items-center rounded-full bg-custom-background-80">
|
<div className="mx-auto grid h-52 w-52 place-items-center rounded-full bg-neutral-component-surface-dark">
|
||||||
<div className="grid h-32 w-32 place-items-center">
|
<div className="grid h-32 w-32 place-items-center">
|
||||||
<Image src={SomethingWentWrongImage} alt="Oops! Something went wrong" />
|
<Image src={SomethingWentWrongImage} alt="Oops! Something went wrong" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,14 +8,14 @@ import IssueNavbar from "components/issues/navbar";
|
|||||||
|
|
||||||
const ProjectLayout = ({ children }: { children: React.ReactNode }) => (
|
const ProjectLayout = ({ children }: { children: React.ReactNode }) => (
|
||||||
<div className="relative flex h-screen min-h-[500px] w-screen flex-col overflow-hidden">
|
<div className="relative flex h-screen min-h-[500px] w-screen flex-col overflow-hidden">
|
||||||
<div className="relative flex h-[60px] flex-shrink-0 select-none items-center border-b border-neutral-border-medium bg-custom-sidebar-background-100">
|
<div className="relative flex h-[60px] flex-shrink-0 select-none items-center border-b border-neutral-border-medium bg-sidebar-neutral-component-surface-light">
|
||||||
<IssueNavbar />
|
<IssueNavbar />
|
||||||
</div>
|
</div>
|
||||||
<div className="relative h-full w-full overflow-hidden bg-custom-background-90">{children}</div>
|
<div className="relative h-full w-full overflow-hidden bg-neutral-component-surface-medium">{children}</div>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="https://plane.so"
|
href="https://plane.so"
|
||||||
className="fixed bottom-2.5 right-5 !z-[999999] flex items-center gap-1 rounded border border-neutral-border-medium bg-custom-background-100 px-2 py-1 shadow-custom-shadow-2xs"
|
className="fixed bottom-2.5 right-5 !z-[999999] flex items-center gap-1 rounded border border-neutral-border-medium bg-neutral-component-surface-light px-2 py-1 shadow-custom-shadow-2xs"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer noopener"
|
rel="noreferrer noopener"
|
||||||
>
|
>
|
||||||
|
@ -5,7 +5,7 @@ class MyDocument extends Document {
|
|||||||
return (
|
return (
|
||||||
<Html>
|
<Html>
|
||||||
<Head />
|
<Head />
|
||||||
<body className="w-100 bg-custom-background-100 antialiased">
|
<body className="w-100 bg-neutral-component-surface-light antialiased">
|
||||||
<Main />
|
<Main />
|
||||||
<NextScript />
|
<NextScript />
|
||||||
</body>
|
</body>
|
||||||
|
@ -21,11 +21,11 @@ const OnBoardingPage = () => {
|
|||||||
}, [userStore]);
|
}, [userStore]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-screen w-full overflow-hidden bg-custom-background-100">
|
<div className="h-screen w-full overflow-hidden bg-neutral-component-surface-light">
|
||||||
<div className="flex h-full w-full flex-col gap-y-2 overflow-hidden sm:flex-row sm:gap-y-0">
|
<div className="flex h-full w-full flex-col gap-y-2 overflow-hidden sm:flex-row sm:gap-y-0">
|
||||||
<div className="relative h-1/6 flex-shrink-0 sm:w-2/12 md:w-3/12 lg:w-1/5">
|
<div className="relative h-1/6 flex-shrink-0 sm:w-2/12 md:w-3/12 lg:w-1/5">
|
||||||
<div className="absolute left-0 top-1/2 z-10 h-[0.5px] w-full -translate-y-1/2 border-b-[0.5px] border-neutral-border-medium sm:left-1/2 sm:top-0 sm:h-screen sm:w-[0.5px] sm:-translate-x-1/2 sm:translate-y-0 sm:border-r-[0.5px] md:left-1/3" />
|
<div className="absolute left-0 top-1/2 z-10 h-[0.5px] w-full -translate-y-1/2 border-b-[0.5px] border-neutral-border-medium sm:left-1/2 sm:top-0 sm:h-screen sm:w-[0.5px] sm:-translate-x-1/2 sm:translate-y-0 sm:border-r-[0.5px] md:left-1/3" />
|
||||||
<div className="absolute left-2 top-1/2 z-10 grid -translate-y-1/2 place-items-center bg-custom-background-100 px-3 py-5 sm:left-1/2 sm:top-12 sm:-translate-x-1/2 sm:translate-y-0 sm:px-0 md:left-1/3">
|
<div className="absolute left-2 top-1/2 z-10 grid -translate-y-1/2 place-items-center bg-neutral-component-surface-light px-3 py-5 sm:left-1/2 sm:top-12 sm:-translate-x-1/2 sm:translate-y-0 sm:px-0 md:left-1/3">
|
||||||
<div className="h-[30px] w-[30px]">
|
<div className="h-[30px] w-[30px]">
|
||||||
<img src={`${imagePrefix}/plane-logos/blue-without-text.png`} alt="Plane logo" />
|
<img src={`${imagePrefix}/plane-logos/blue-without-text.png`} alt="Plane logo" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -85,7 +85,7 @@ export const DeactivateAccountModal: React.FC<Props> = (props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-custom-background-100 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-[40rem]">
|
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-neutral-component-surface-light text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-[40rem]">
|
||||||
<div className="px-4 pb-4 pt-5 sm:p-6 sm:pb-4">
|
<div className="px-4 pb-4 pt-5 sm:p-6 sm:pb-4">
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="flex items-start gap-x-4">
|
<div className="flex items-start gap-x-4">
|
||||||
|
@ -46,7 +46,7 @@ export const CustomTooltip: React.FC<Props> = ({ datum, analytics, params }) =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center gap-2 rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="flex items-center gap-2 rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
<span
|
<span
|
||||||
className="h-3 w-3 rounded"
|
className="h-3 w-3 rounded"
|
||||||
style={{
|
style={{
|
||||||
|
@ -147,12 +147,12 @@ export const CustomAnalyticsSidebar: React.FC<Props> = observer((props) => {
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div className="flex flex-wrap items-center gap-2">
|
<div className="flex flex-wrap items-center gap-2">
|
||||||
<div className="flex items-center gap-1 rounded-md bg-custom-background-80 px-3 py-1 text-xs text-custom-text-200">
|
<div className="flex items-center gap-1 rounded-md bg-neutral-component-surface-dark px-3 py-1 text-xs text-custom-text-200">
|
||||||
<LayersIcon height={14} width={14} />
|
<LayersIcon height={14} width={14} />
|
||||||
{analytics ? analytics.total : "..."} Issues
|
{analytics ? analytics.total : "..."} Issues
|
||||||
</div>
|
</div>
|
||||||
{isProjectLevel && (
|
{isProjectLevel && (
|
||||||
<div className="flex items-center gap-1 rounded-md bg-custom-background-80 px-3 py-1 text-xs text-custom-text-200">
|
<div className="flex items-center gap-1 rounded-md bg-neutral-component-surface-dark px-3 py-1 text-xs text-custom-text-200">
|
||||||
<CalendarDays className="h-3.5 w-3.5" />
|
<CalendarDays className="h-3.5 w-3.5" />
|
||||||
{renderFormattedDate(
|
{renderFormattedDate(
|
||||||
(cycleId
|
(cycleId
|
||||||
|
@ -24,7 +24,7 @@ export const AnalyticsTable: React.FC<Props> = ({ analytics, barGraphData, param
|
|||||||
<div className="overflow-x-auto">
|
<div className="overflow-x-auto">
|
||||||
<div className="inline-block min-w-full align-middle">
|
<div className="inline-block min-w-full align-middle">
|
||||||
<table className="min-w-full divide-y divide-neutral-border-medium whitespace-nowrap border-y border-neutral-border-medium">
|
<table className="min-w-full divide-y divide-neutral-border-medium whitespace-nowrap border-y border-neutral-border-medium">
|
||||||
<thead className="bg-custom-background-80">
|
<thead className="bg-neutral-component-surface-dark">
|
||||||
<tr className="divide-x divide-neutral-border-medium text-sm text-custom-text-100">
|
<tr className="divide-x divide-neutral-border-medium text-sm text-custom-text-100">
|
||||||
<th scope="col" className="px-2.5 py-3 text-left font-medium">
|
<th scope="col" className="px-2.5 py-3 text-left font-medium">
|
||||||
{ANALYTICS_X_AXIS_VALUES.find((v) => v.value === params.x_axis)?.label}
|
{ANALYTICS_X_AXIS_VALUES.find((v) => v.value === params.x_axis)?.label}
|
||||||
|
@ -14,7 +14,7 @@ export const ProjectAnalyticsModalHeader: React.FC<Props> = observer((props) =>
|
|||||||
const { fullScreen, handleClose, setFullScreen, title } = props;
|
const { fullScreen, handleClose, setFullScreen, title } = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex items-center justify-between gap-4 bg-custom-background-100 px-5 py-4 text-sm">
|
<div className="flex items-center justify-between gap-4 bg-neutral-component-surface-light px-5 py-4 text-sm">
|
||||||
<h3 className="break-words">Analytics for {title}</h3>
|
<h3 className="break-words">Analytics for {title}</h3>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<button
|
<button
|
||||||
|
@ -25,8 +25,8 @@ export const ProjectAnalyticsModalMainContent: React.FC<Props> = observer((props
|
|||||||
<Tab
|
<Tab
|
||||||
key={tab.key}
|
key={tab.key}
|
||||||
className={({ selected }) =>
|
className={({ selected }) =>
|
||||||
`rounded-3xl border border-neutral-border-medium px-4 py-2 text-xs hover:bg-custom-background-80 ${
|
`rounded-3xl border border-neutral-border-medium px-4 py-2 text-xs hover:bg-neutral-component-surface-dark ${
|
||||||
selected ? "bg-custom-background-80" : ""
|
selected ? "bg-neutral-component-surface-dark" : ""
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
onClick={() => {}}
|
onClick={() => {}}
|
||||||
|
@ -38,12 +38,12 @@ export const ProjectAnalyticsModal: React.FC<Props> = observer((props) => {
|
|||||||
>
|
>
|
||||||
<Dialog.Panel className="fixed inset-0 z-20 h-full w-full overflow-y-auto">
|
<Dialog.Panel className="fixed inset-0 z-20 h-full w-full overflow-y-auto">
|
||||||
<div
|
<div
|
||||||
className={`fixed right-0 top-0 z-20 h-full bg-custom-background-100 shadow-custom-shadow-md ${
|
className={`fixed right-0 top-0 z-20 h-full bg-neutral-component-surface-light shadow-custom-shadow-md ${
|
||||||
fullScreen ? "w-full p-2" : "w-1/2"
|
fullScreen ? "w-full p-2" : "w-1/2"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={`flex h-full flex-col overflow-hidden border-neutral-border-medium bg-custom-background-100 text-left ${
|
className={`flex h-full flex-col overflow-hidden border-neutral-border-medium bg-neutral-component-surface-light text-left ${
|
||||||
fullScreen ? "rounded-lg border" : "border-l"
|
fullScreen ? "rounded-lg border" : "border-l"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
|
@ -31,13 +31,13 @@ export const AnalyticsDemand: React.FC<Props> = ({ defaultAnalytics }) => (
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<h6 className="capitalize">{group.state_group}</h6>
|
<h6 className="capitalize">{group.state_group}</h6>
|
||||||
<span className="ml-1 rounded-3xl bg-custom-background-80 px-2 py-0.5 text-[0.65rem] text-custom-text-200">
|
<span className="ml-1 rounded-3xl bg-neutral-component-surface-dark px-2 py-0.5 text-[0.65rem] text-custom-text-200">
|
||||||
{group.state_count}
|
{group.state_count}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-custom-text-200">{percentage}%</p>
|
<p className="text-custom-text-200">{percentage}%</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="bar relative h-1 w-full rounded bg-custom-background-80">
|
<div className="bar relative h-1 w-full rounded bg-neutral-component-surface-dark">
|
||||||
<div
|
<div
|
||||||
className="absolute left-0 top-0 h-1 rounded duration-300"
|
className="absolute left-0 top-0 h-1 rounded duration-300"
|
||||||
style={{
|
style={{
|
||||||
@ -50,7 +50,7 @@ export const AnalyticsDemand: React.FC<Props> = ({ defaultAnalytics }) => (
|
|||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
<div className="!mt-6 flex w-min items-center gap-2 whitespace-nowrap rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="!mt-6 flex w-min items-center gap-2 whitespace-nowrap rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
<p className="flex items-center gap-1 text-custom-text-200">
|
<p className="flex items-center gap-1 text-custom-text-200">
|
||||||
<Triangle className="h-4 w-4" />
|
<Triangle className="h-4 w-4" />
|
||||||
<span>Estimate Demand:</span>
|
<span>Estimate Demand:</span>
|
||||||
|
@ -29,7 +29,7 @@ export const AnalyticsScope: React.FC<Props> = ({ defaultAnalytics }) => (
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
<span className="font-medium text-custom-text-200">
|
<span className="font-medium text-custom-text-200">
|
||||||
{assignee ? assignee.assignees__display_name : "No assignee"}:{" "}
|
{assignee ? assignee.assignees__display_name : "No assignee"}:{" "}
|
||||||
</span>
|
</span>
|
||||||
|
@ -35,7 +35,7 @@ export const AnalyticsYearWiseIssues: React.FC<Props> = ({ defaultAnalytics }) =
|
|||||||
margin={{ top: 20 }}
|
margin={{ top: 20 }}
|
||||||
enableSlices="x"
|
enableSlices="x"
|
||||||
sliceTooltip={(datum) => (
|
sliceTooltip={(datum) => (
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
{datum.slice.points[0].data.yFormatted}
|
{datum.slice.points[0].data.yFormatted}
|
||||||
<span className="text-custom-text-200"> issues closed in </span>
|
<span className="text-custom-text-200"> issues closed in </span>
|
||||||
{datum.slice.points[0].data.xFormatted}
|
{datum.slice.points[0].data.xFormatted}
|
||||||
|
@ -94,7 +94,7 @@ export const DeleteApiTokenModal: FC<Props> = (props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform overflow-hidden rounded-lg border border-neutral-border-medium bg-custom-background-100 text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-2xl">
|
<Dialog.Panel className="relative transform overflow-hidden rounded-lg border border-neutral-border-medium bg-neutral-component-surface-light text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-2xl">
|
||||||
<div className="flex flex-col gap-3 p-4">
|
<div className="flex flex-col gap-3 p-4">
|
||||||
<div className="flex w-full items-center justify-start">
|
<div className="flex w-full items-center justify-start">
|
||||||
<h3 className="text-lg font-medium leading-6 text-custom-text-100">
|
<h3 className="text-lg font-medium leading-6 text-custom-text-100">
|
||||||
|
@ -14,7 +14,7 @@ export const ApiTokenEmptyState: React.FC<Props> = (props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`mx-auto flex w-full items-center justify-center rounded-sm border border-neutral-border-medium bg-custom-background-90 px-16 py-10 lg:w-3/4`}
|
className={`mx-auto flex w-full items-center justify-center rounded-sm border border-neutral-border-medium bg-neutral-component-surface-medium px-16 py-10 lg:w-3/4`}
|
||||||
>
|
>
|
||||||
<div className="flex w-full flex-col items-center text-center">
|
<div className="flex w-full flex-col items-center text-center">
|
||||||
<Image src={emptyApiTokens} className="w-52 sm:w-60" alt="empty" />
|
<Image src={emptyApiTokens} className="w-52 sm:w-60" alt="empty" />
|
||||||
|
@ -112,7 +112,7 @@ export const CreateApiTokenModal: React.FC<Props> = (props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform rounded-lg bg-custom-background-100 p-5 px-4 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-2xl">
|
<Dialog.Panel className="relative transform rounded-lg bg-neutral-component-surface-light p-5 px-4 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-2xl">
|
||||||
{generatedToken ? (
|
{generatedToken ? (
|
||||||
<GeneratedTokenDetails handleClose={handleClose} tokenDetails={generatedToken} />
|
<GeneratedTokenDetails handleClose={handleClose} tokenDetails={generatedToken} />
|
||||||
) : (
|
) : (
|
||||||
|
@ -202,7 +202,11 @@ export const CreateApiTokenForm: React.FC<Props> = (props) => {
|
|||||||
<div
|
<div
|
||||||
className={`flex cursor-pointer items-center gap-2 !rounded border-[0.5px] border-neutral-border-medium px-2 py-1 text-xs !shadow-none !duration-0 ${
|
className={`flex cursor-pointer items-center gap-2 !rounded border-[0.5px] border-neutral-border-medium px-2 py-1 text-xs !shadow-none !duration-0 ${
|
||||||
customDate ? "w-[7.5rem]" : ""
|
customDate ? "w-[7.5rem]" : ""
|
||||||
} ${neverExpires ? "!cursor-not-allowed text-custom-text-400" : "hover:bg-custom-background-80"}`}
|
} ${
|
||||||
|
neverExpires
|
||||||
|
? "!cursor-not-allowed text-custom-text-400"
|
||||||
|
: "hover:bg-neutral-component-surface-dark"
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
<Calendar className="h-3 w-3" />
|
<Calendar className="h-3 w-3" />
|
||||||
{customDate ? renderFormattedDate(customDate) : "Set date"}
|
{customDate ? renderFormattedDate(customDate) : "Set date"}
|
||||||
|
@ -34,7 +34,9 @@ export const ApiTokenListItem: React.FC<Props> = (props) => {
|
|||||||
<h5 className="truncate text-sm font-medium">{token.label}</h5>
|
<h5 className="truncate text-sm font-medium">{token.label}</h5>
|
||||||
<span
|
<span
|
||||||
className={`${
|
className={`${
|
||||||
token.is_active ? "bg-green-500/10 text-green-500" : "bg-custom-background-80 text-custom-text-400"
|
token.is_active
|
||||||
|
? "bg-green-500/10 text-green-500"
|
||||||
|
: "bg-neutral-component-surface-dark text-custom-text-400"
|
||||||
} ml-2 flex h-4 max-h-fit items-center rounded-sm px-2 text-xs font-medium`}
|
} ml-2 flex h-4 max-h-fit items-center rounded-sm px-2 text-xs font-medium`}
|
||||||
>
|
>
|
||||||
{token.is_active ? "Active" : "Expired"}
|
{token.is_active ? "Active" : "Expired"}
|
||||||
|
@ -24,7 +24,7 @@ export const NotAuthorizedView: React.FC<Props> = observer((props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultLayout>
|
<DefaultLayout>
|
||||||
<div className="flex h-full w-full flex-col items-center justify-center gap-y-5 bg-custom-background-100 text-center">
|
<div className="flex h-full w-full flex-col items-center justify-center gap-y-5 bg-neutral-component-surface-light text-center">
|
||||||
<div className="h-44 w-72">
|
<div className="h-44 w-72">
|
||||||
<Image
|
<Image
|
||||||
src={type === "project" ? ProjectNotAuthorizedImg : WorkspaceNotAuthorizedImg}
|
src={type === "project" ? ProjectNotAuthorizedImg : WorkspaceNotAuthorizedImg}
|
||||||
|
@ -33,7 +33,7 @@ export const JoinProject: React.FC = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex h-full w-full flex-col items-center justify-center gap-y-5 bg-custom-background-100 text-center">
|
<div className="flex h-full w-full flex-col items-center justify-center gap-y-5 bg-neutral-component-surface-light text-center">
|
||||||
<div className="h-44 w-72">
|
<div className="h-44 w-72">
|
||||||
<Image src={JoinProjectImg} height="176" width="288" alt="JoinProject" />
|
<Image src={JoinProjectImg} height="176" width="288" alt="JoinProject" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,7 +42,7 @@ export const AutoArchiveAutomation: React.FC<Props> = observer((props) => {
|
|||||||
<div className="flex flex-col gap-4 border-b border-neutral-border-subtle px-4 py-6">
|
<div className="flex flex-col gap-4 border-b border-neutral-border-subtle px-4 py-6">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div className="flex items-start gap-3">
|
<div className="flex items-start gap-3">
|
||||||
<div className="flex items-center justify-center rounded bg-custom-background-90 p-3">
|
<div className="flex items-center justify-center rounded bg-neutral-component-surface-medium p-3">
|
||||||
<ArchiveRestore className="h-4 w-4 flex-shrink-0 text-custom-text-100" />
|
<ArchiveRestore className="h-4 w-4 flex-shrink-0 text-custom-text-100" />
|
||||||
</div>
|
</div>
|
||||||
<div className="">
|
<div className="">
|
||||||
@ -67,7 +67,7 @@ export const AutoArchiveAutomation: React.FC<Props> = observer((props) => {
|
|||||||
{currentProjectDetails ? (
|
{currentProjectDetails ? (
|
||||||
currentProjectDetails.archive_in !== 0 && (
|
currentProjectDetails.archive_in !== 0 && (
|
||||||
<div className="ml-12">
|
<div className="ml-12">
|
||||||
<div className="flex w-full items-center justify-between gap-2 rounded border border-neutral-border-medium bg-custom-background-90 px-5 py-4">
|
<div className="flex w-full items-center justify-between gap-2 rounded border border-neutral-border-medium bg-neutral-component-surface-medium px-5 py-4">
|
||||||
<div className="w-1/2 text-sm font-medium">Auto-archive issues that are closed for</div>
|
<div className="w-1/2 text-sm font-medium">Auto-archive issues that are closed for</div>
|
||||||
<div className="w-1/2">
|
<div className="w-1/2">
|
||||||
<CustomSelect
|
<CustomSelect
|
||||||
@ -90,7 +90,7 @@ export const AutoArchiveAutomation: React.FC<Props> = observer((props) => {
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex w-full select-none items-center rounded px-1 py-1.5 text-sm text-custom-text-200 hover:bg-custom-background-80"
|
className="flex w-full select-none items-center rounded px-1 py-1.5 text-sm text-custom-text-200 hover:bg-neutral-component-surface-dark"
|
||||||
onClick={() => setmonthModal(true)}
|
onClick={() => setmonthModal(true)}
|
||||||
>
|
>
|
||||||
Customise Time Range
|
Customise Time Range
|
||||||
|
@ -68,7 +68,7 @@ export const AutoCloseAutomation: React.FC<Props> = observer((props) => {
|
|||||||
<div className="flex flex-col gap-4 border-b border-neutral-border-medium px-4 py-6">
|
<div className="flex flex-col gap-4 border-b border-neutral-border-medium px-4 py-6">
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<div className="flex items-start gap-3">
|
<div className="flex items-start gap-3">
|
||||||
<div className="flex items-center justify-center rounded bg-custom-background-90 p-3">
|
<div className="flex items-center justify-center rounded bg-neutral-component-surface-medium p-3">
|
||||||
<ArchiveX className="h-4 w-4 flex-shrink-0 text-red-500" />
|
<ArchiveX className="h-4 w-4 flex-shrink-0 text-red-500" />
|
||||||
</div>
|
</div>
|
||||||
<div className="">
|
<div className="">
|
||||||
@ -93,7 +93,7 @@ export const AutoCloseAutomation: React.FC<Props> = observer((props) => {
|
|||||||
{currentProjectDetails ? (
|
{currentProjectDetails ? (
|
||||||
currentProjectDetails.close_in !== 0 && (
|
currentProjectDetails.close_in !== 0 && (
|
||||||
<div className="ml-12">
|
<div className="ml-12">
|
||||||
<div className="flex flex-col rounded border border-neutral-border-medium bg-custom-background-90">
|
<div className="flex flex-col rounded border border-neutral-border-medium bg-neutral-component-surface-medium">
|
||||||
<div className="flex w-full items-center justify-between gap-2 px-5 py-4">
|
<div className="flex w-full items-center justify-between gap-2 px-5 py-4">
|
||||||
<div className="w-1/2 text-sm font-medium">Auto-close issues that are inactive for</div>
|
<div className="w-1/2 text-sm font-medium">Auto-close issues that are inactive for</div>
|
||||||
<div className="w-1/2">
|
<div className="w-1/2">
|
||||||
@ -116,7 +116,7 @@ export const AutoCloseAutomation: React.FC<Props> = observer((props) => {
|
|||||||
))}
|
))}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex w-full select-none items-center rounded px-1 py-1.5 text-custom-text-200 hover:bg-custom-background-80"
|
className="flex w-full select-none items-center rounded px-1 py-1.5 text-custom-text-200 hover:bg-neutral-component-surface-dark"
|
||||||
onClick={() => setmonthModal(true)}
|
onClick={() => setmonthModal(true)}
|
||||||
>
|
>
|
||||||
Customize Time Range
|
Customize Time Range
|
||||||
|
@ -68,7 +68,7 @@ export const SelectMonthModal: React.FC<Props> = ({ type, initialValues, isOpen,
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform rounded-lg bg-custom-background-100 px-4 pb-4 pt-5 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
<Dialog.Panel className="relative transform rounded-lg bg-neutral-component-surface-light px-4 pb-4 pt-5 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
||||||
<form onSubmit={handleSubmit(onSubmit)}>
|
<form onSubmit={handleSubmit(onSubmit)}>
|
||||||
<div>
|
<div>
|
||||||
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
||||||
|
@ -16,7 +16,7 @@ const Breadcrumbs = ({ children }: BreadcrumbsProps) => {
|
|||||||
<div className="flex w-full flex-grow items-center overflow-hidden overflow-ellipsis whitespace-nowrap">
|
<div className="flex w-full flex-grow items-center overflow-hidden overflow-ellipsis whitespace-nowrap">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="group grid h-7 w-7 flex-shrink-0 cursor-pointer place-items-center rounded border border-sidebar-neutral-border-medium text-center text-sm hover:bg-custom-sidebar-background-90"
|
className="group grid h-7 w-7 flex-shrink-0 cursor-pointer place-items-center rounded border border-sidebar-neutral-border-medium text-center text-sm hover:bg-sidebar-neutral-component-surface-medium"
|
||||||
onClick={() => router.back()}
|
onClick={() => router.back()}
|
||||||
>
|
>
|
||||||
<MoveLeft className="h-4 w-4 text-custom-sidebar-text-200 group-hover:text-custom-sidebar-text-100" />
|
<MoveLeft className="h-4 w-4 text-custom-sidebar-text-200 group-hover:text-custom-sidebar-text-100" />
|
||||||
|
@ -165,7 +165,7 @@ export const CommandModal: React.FC = observer(() => {
|
|||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative flex w-full items-center justify-center ">
|
<Dialog.Panel className="relative flex w-full items-center justify-center ">
|
||||||
<div className="w-full max-w-2xl transform divide-y divide-neutral-border-medium divide-opacity-10 rounded-lg bg-custom-background-100 shadow-custom-shadow-md transition-all">
|
<div className="w-full max-w-2xl transform divide-y divide-neutral-border-medium divide-opacity-10 rounded-lg bg-neutral-component-surface-light shadow-custom-shadow-md transition-all">
|
||||||
<Command
|
<Command
|
||||||
filter={(value, search) => {
|
filter={(value, search) => {
|
||||||
if (value.toLowerCase().includes(search.toLowerCase())) return 1;
|
if (value.toLowerCase().includes(search.toLowerCase())) return 1;
|
||||||
@ -191,7 +191,7 @@ export const CommandModal: React.FC = observer(() => {
|
|||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{issueDetails && (
|
{issueDetails && (
|
||||||
<div className="overflow-hidden truncate rounded-md bg-custom-background-80 p-2 text-xs font-medium text-custom-text-200">
|
<div className="overflow-hidden truncate rounded-md bg-neutral-component-surface-dark p-2 text-xs font-medium text-custom-text-200">
|
||||||
{projectDetails?.identifier}-{issueDetails.sequence_id} {issueDetails.name}
|
{projectDetails?.identifier}-{issueDetails.sequence_id} {issueDetails.name}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@ -281,7 +281,7 @@ export const CommandModal: React.FC = observer(() => {
|
|||||||
setTrackElement("COMMAND_PALETTE");
|
setTrackElement("COMMAND_PALETTE");
|
||||||
toggleCreateIssueModal(true);
|
toggleCreateIssueModal(true);
|
||||||
}}
|
}}
|
||||||
className="focus:bg-custom-background-80"
|
className="focus:bg-neutral-component-surface-dark"
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-2 text-custom-text-200">
|
<div className="flex items-center gap-2 text-custom-text-200">
|
||||||
<LayersIcon className="h-3.5 w-3.5" />
|
<LayersIcon className="h-3.5 w-3.5" />
|
||||||
|
@ -65,11 +65,11 @@ export const ShortcutCommandsList: React.FC<Props> = (props) => {
|
|||||||
{shortcut.keys.split(",").map((key) => (
|
{shortcut.keys.split(",").map((key) => (
|
||||||
<div key={key} className="flex items-center gap-1">
|
<div key={key} className="flex items-center gap-1">
|
||||||
{key === "Ctrl" ? (
|
{key === "Ctrl" ? (
|
||||||
<div className="grid h-6 min-w-[1.5rem] place-items-center rounded-sm border-[0.5px] border-neutral-border-medium bg-custom-background-90 px-1.5">
|
<div className="grid h-6 min-w-[1.5rem] place-items-center rounded-sm border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-medium px-1.5">
|
||||||
<Command className="h-2.5 w-2.5 text-custom-text-200" />
|
<Command className="h-2.5 w-2.5 text-custom-text-200" />
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<kbd className="grid h-6 min-w-[1.5rem] place-items-center rounded-sm border-[0.5px] border-neutral-border-medium bg-custom-background-90 px-1.5 text-[10px] text-custom-text-200">
|
<kbd className="grid h-6 min-w-[1.5rem] place-items-center rounded-sm border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-medium px-1.5 text-[10px] text-custom-text-200">
|
||||||
{key}
|
{key}
|
||||||
</kbd>
|
</kbd>
|
||||||
)}
|
)}
|
||||||
|
@ -48,14 +48,14 @@ export const ShortcutsModal: FC<Props> = (props) => {
|
|||||||
>
|
>
|
||||||
<Dialog.Panel className="h-full w-full">
|
<Dialog.Panel className="h-full w-full">
|
||||||
<div className="grid h-full w-full place-items-center p-5">
|
<div className="grid h-full w-full place-items-center p-5">
|
||||||
<div className="flex h-[61vh] w-full flex-col space-y-4 overflow-hidden rounded-lg bg-custom-background-100 p-5 shadow-custom-shadow-md transition-all sm:w-[28rem]">
|
<div className="flex h-[61vh] w-full flex-col space-y-4 overflow-hidden rounded-lg bg-neutral-component-surface-light p-5 shadow-custom-shadow-md transition-all sm:w-[28rem]">
|
||||||
<Dialog.Title as="h3" className="flex justify-between">
|
<Dialog.Title as="h3" className="flex justify-between">
|
||||||
<span className="text-lg font-medium">Keyboard shortcuts</span>
|
<span className="text-lg font-medium">Keyboard shortcuts</span>
|
||||||
<button type="button" onClick={handleClose}>
|
<button type="button" onClick={handleClose}>
|
||||||
<X className="h-4 w-4 text-custom-text-200 hover:text-custom-text-100" aria-hidden="true" />
|
<X className="h-4 w-4 text-custom-text-200 hover:text-custom-text-100" aria-hidden="true" />
|
||||||
</button>
|
</button>
|
||||||
</Dialog.Title>
|
</Dialog.Title>
|
||||||
<div className="flex w-full items-center rounded border-[0.5px] border-neutral-border-medium bg-custom-background-90 px-2">
|
<div className="flex w-full items-center rounded border-[0.5px] border-neutral-border-medium bg-neutral-component-surface-medium px-2">
|
||||||
<Search className="h-3.5 w-3.5 text-custom-text-200" />
|
<Search className="h-3.5 w-3.5 text-custom-text-200" />
|
||||||
<Input
|
<Input
|
||||||
id="search"
|
id="search"
|
||||||
|
@ -85,7 +85,7 @@ export const NewEmptyState: React.FC<Props> = ({
|
|||||||
<div className="relative mt-5 h-0 w-0 border-b-[11px] border-r-[11px] border-t-[11px] border-neutral-border-medium border-y-transparent">
|
<div className="relative mt-5 h-0 w-0 border-b-[11px] border-r-[11px] border-t-[11px] border-neutral-border-medium border-y-transparent">
|
||||||
<div className="absolute right-[-12px] top-[-10px] h-0 w-0 border-b-[10px] border-r-[10px] border-t-[10px] border-custom-background-100 border-y-transparent" />
|
<div className="absolute right-[-12px] top-[-10px] h-0 w-0 border-b-[10px] border-r-[10px] border-t-[10px] border-custom-background-100 border-y-transparent" />
|
||||||
</div>
|
</div>
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-background-100">
|
<div className="rounded-md border border-neutral-border-medium bg-neutral-component-surface-light">
|
||||||
<h1 className="p-5">
|
<h1 className="p-5">
|
||||||
<h3 className="text-lg font-semibold">{comicBox?.title}</h3>
|
<h3 className="text-lg font-semibold">{comicBox?.title}</h3>
|
||||||
<h4 className="mt-1 text-sm">{comicBox?.description}</h4>
|
<h4 className="mt-1 text-sm">{comicBox?.description}</h4>
|
||||||
@ -97,7 +97,7 @@ export const NewEmptyState: React.FC<Props> = ({
|
|||||||
<div className="relative mt-5 h-0 w-0 border-b-[11px] border-l-[11px] border-t-[11px] border-neutral-border-medium border-y-transparent">
|
<div className="relative mt-5 h-0 w-0 border-b-[11px] border-l-[11px] border-t-[11px] border-neutral-border-medium border-y-transparent">
|
||||||
<div className="absolute left-[-12px] top-[-10px] h-0 w-0 border-b-[10px] border-l-[10px] border-t-[10px] border-custom-background-100 border-y-transparent" />
|
<div className="absolute left-[-12px] top-[-10px] h-0 w-0 border-b-[10px] border-l-[10px] border-t-[10px] border-custom-background-100 border-y-transparent" />
|
||||||
</div>
|
</div>
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-background-100">
|
<div className="rounded-md border border-neutral-border-medium bg-neutral-component-surface-light">
|
||||||
<h1 className="p-5">
|
<h1 className="p-5">
|
||||||
<h3 className="text-lg font-semibold">{comicBox?.title}</h3>
|
<h3 className="text-lg font-semibold">{comicBox?.title}</h3>
|
||||||
<h4 className="mt-1 text-sm">{comicBox?.description}</h4>
|
<h4 className="mt-1 text-sm">{comicBox?.description}</h4>
|
||||||
|
@ -49,7 +49,7 @@ export const ProductUpdatesModal: React.FC<Props> = ({ isOpen, setIsOpen }) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative min-w-[100%] overflow-hidden rounded-lg bg-custom-background-100 shadow-custom-shadow-md sm:min-w-[50%] sm:max-w-[50%]">
|
<Dialog.Panel className="relative min-w-[100%] overflow-hidden rounded-lg bg-neutral-component-surface-light shadow-custom-shadow-md sm:min-w-[50%] sm:max-w-[50%]">
|
||||||
<div className="flex max-h-[90vh] w-full flex-col p-4">
|
<div className="flex max-h-[90vh] w-full flex-col p-4">
|
||||||
<Dialog.Title as="h3" className="flex items-center justify-between text-lg font-semibold">
|
<Dialog.Title as="h3" className="flex items-center justify-between text-lg font-semibold">
|
||||||
<span>Product Updates</span>
|
<span>Product Updates</span>
|
||||||
@ -64,7 +64,7 @@ export const ProductUpdatesModal: React.FC<Props> = ({ isOpen, setIsOpen }) => {
|
|||||||
{updates.map((item, index) => (
|
{updates.map((item, index) => (
|
||||||
<React.Fragment key={item.id}>
|
<React.Fragment key={item.id}>
|
||||||
<div className="flex items-center gap-3 text-xs text-custom-text-200">
|
<div className="flex items-center gap-3 text-xs text-custom-text-200">
|
||||||
<span className="flex items-center rounded-full border border-neutral-border-medium bg-custom-background-90 px-3 py-1.5 text-xs">
|
<span className="flex items-center rounded-full border border-neutral-border-medium bg-neutral-component-surface-medium px-3 py-1.5 text-xs">
|
||||||
{item.tag_name}
|
{item.tag_name}
|
||||||
</span>
|
</span>
|
||||||
<span>{renderFormattedDate(item.published_at)}</span>
|
<span>{renderFormattedDate(item.published_at)}</span>
|
||||||
|
@ -38,7 +38,8 @@ export const DateFilterModal: React.FC<Props> = ({ title, handleClose, isOpen, o
|
|||||||
const handleFormSubmit = (formData: TFormValues) => {
|
const handleFormSubmit = (formData: TFormValues) => {
|
||||||
const { filterType, date1, date2 } = formData;
|
const { filterType, date1, date2 } = formData;
|
||||||
|
|
||||||
if (filterType === "range") onSelect([`${renderFormattedPayloadDate(date1)};after`, `${renderFormattedPayloadDate(date2)};before`]);
|
if (filterType === "range")
|
||||||
|
onSelect([`${renderFormattedPayloadDate(date1)};after`, `${renderFormattedPayloadDate(date2)};before`]);
|
||||||
else onSelect([`${renderFormattedPayloadDate(date1)};${filterType}`]);
|
else onSelect([`${renderFormattedPayloadDate(date1)};${filterType}`]);
|
||||||
|
|
||||||
handleClose();
|
handleClose();
|
||||||
@ -74,7 +75,7 @@ export const DateFilterModal: React.FC<Props> = ({ title, handleClose, isOpen, o
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative flex transform rounded-lg bg-custom-background-100 px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
<Dialog.Panel className="relative flex transform rounded-lg bg-neutral-component-surface-light px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
||||||
<form className="space-y-4">
|
<form className="space-y-4">
|
||||||
<div className="flex w-full justify-between">
|
<div className="flex w-full justify-between">
|
||||||
<Controller
|
<Controller
|
||||||
|
@ -139,7 +139,7 @@ export const ImagePickerPopover: React.FC<Props> = observer((props) => {
|
|||||||
return (
|
return (
|
||||||
<Popover className="relative z-[2]" ref={ref} tabIndex={tabIndex} onKeyDown={handleKeyDown}>
|
<Popover className="relative z-[2]" ref={ref} tabIndex={tabIndex} onKeyDown={handleKeyDown}>
|
||||||
<Popover.Button
|
<Popover.Button
|
||||||
className="rounded border border-neutral-border-medium bg-custom-background-100 px-2 py-1 text-xs text-custom-text-200 hover:text-custom-text-100"
|
className="rounded border border-neutral-border-medium bg-neutral-component-surface-light px-2 py-1 text-xs text-custom-text-200 hover:text-custom-text-100"
|
||||||
onClick={openDropdown}
|
onClick={openDropdown}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
>
|
>
|
||||||
@ -148,15 +148,15 @@ export const ImagePickerPopover: React.FC<Props> = observer((props) => {
|
|||||||
|
|
||||||
{isOpen && (
|
{isOpen && (
|
||||||
<Popover.Panel
|
<Popover.Panel
|
||||||
className="absolute right-0 z-10 mt-2 rounded-md border border-neutral-border-medium bg-custom-background-100 shadow-custom-shadow-sm"
|
className="absolute right-0 z-10 mt-2 rounded-md border border-neutral-border-medium bg-neutral-component-surface-light shadow-custom-shadow-sm"
|
||||||
static
|
static
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
ref={imagePickerRef}
|
ref={imagePickerRef}
|
||||||
className="flex h-96 w-80 flex-col overflow-auto rounded border border-neutral-border-medium bg-custom-background-100 p-3 shadow-2xl md:h-[28rem] md:w-[36rem]"
|
className="flex h-96 w-80 flex-col overflow-auto rounded border border-neutral-border-medium bg-neutral-component-surface-light p-3 shadow-2xl md:h-[28rem] md:w-[36rem]"
|
||||||
>
|
>
|
||||||
<Tab.Group>
|
<Tab.Group>
|
||||||
<Tab.List as="span" className="inline-block rounded bg-custom-background-80 p-1">
|
<Tab.List as="span" className="inline-block rounded bg-neutral-component-surface-dark p-1">
|
||||||
{tabOptions.map((tab) => {
|
{tabOptions.map((tab) => {
|
||||||
if (!unsplashImages && unsplashError && tab.key === "unsplash") return null;
|
if (!unsplashImages && unsplashError && tab.key === "unsplash") return null;
|
||||||
if (projectCoverImages && projectCoverImages.length === 0 && tab.key === "images") return null;
|
if (projectCoverImages && projectCoverImages.length === 0 && tab.key === "images") return null;
|
||||||
@ -282,13 +282,13 @@ export const ImagePickerPopover: React.FC<Props> = observer((props) => {
|
|||||||
{...getRootProps()}
|
{...getRootProps()}
|
||||||
className={`relative grid h-full w-full cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
className={`relative grid h-full w-full cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
||||||
(image === null && isDragActive) || !value
|
(image === null && isDragActive) || !value
|
||||||
? "border-2 border-dashed border-neutral-border-medium hover:bg-custom-background-90"
|
? "border-2 border-dashed border-neutral-border-medium hover:bg-neutral-component-surface-medium"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="absolute right-0 top-0 z-40 -translate-y-1/2 rounded bg-custom-background-90 px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
className="absolute right-0 top-0 z-40 -translate-y-1/2 rounded bg-neutral-component-surface-medium px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
</button>
|
</button>
|
||||||
|
@ -16,7 +16,7 @@ export const BulkDeleteIssuesModalItem: React.FC<any> = observer((props) => {
|
|||||||
value={issue.id}
|
value={issue.id}
|
||||||
className={({ active }) =>
|
className={({ active }) =>
|
||||||
`flex cursor-pointer select-none items-center justify-between rounded-md px-3 py-2 ${
|
`flex cursor-pointer select-none items-center justify-between rounded-md px-3 py-2 ${
|
||||||
active ? "bg-custom-background-80 text-custom-text-100" : ""
|
active ? "bg-neutral-component-surface-dark text-custom-text-100" : ""
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -130,7 +130,7 @@ export const BulkDeleteIssuesModal: React.FC<Props> = observer((props) => {
|
|||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative flex w-full items-center justify-center ">
|
<Dialog.Panel className="relative flex w-full items-center justify-center ">
|
||||||
<div className="w-full max-w-2xl transform divide-y divide-neutral-border-medium divide-opacity-10 rounded-lg bg-custom-background-100 shadow-custom-shadow-md transition-all">
|
<div className="w-full max-w-2xl transform divide-y divide-neutral-border-medium divide-opacity-10 rounded-lg bg-neutral-component-surface-light shadow-custom-shadow-md transition-all">
|
||||||
<form>
|
<form>
|
||||||
<Combobox
|
<Combobox
|
||||||
onChange={(val: string) => {
|
onChange={(val: string) => {
|
||||||
@ -183,7 +183,7 @@ export const BulkDeleteIssuesModal: React.FC<Props> = observer((props) => {
|
|||||||
<LayersIcon height="56" width="56" />
|
<LayersIcon height="56" width="56" />
|
||||||
<h3 className="text-custom-text-200">
|
<h3 className="text-custom-text-200">
|
||||||
No issues found. Create a new issue with{" "}
|
No issues found. Create a new issue with{" "}
|
||||||
<pre className="inline rounded bg-custom-background-80 px-2 py-1">C</pre>.
|
<pre className="inline rounded bg-neutral-component-surface-dark px-2 py-1">C</pre>.
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -125,7 +125,7 @@ export const ExistingIssuesListModal: React.FC<Props> = (props) => {
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative mx-auto max-w-2xl transform rounded-lg bg-custom-background-100 shadow-custom-shadow-md transition-all">
|
<Dialog.Panel className="relative mx-auto max-w-2xl transform rounded-lg bg-neutral-component-surface-light shadow-custom-shadow-md transition-all">
|
||||||
<Combobox
|
<Combobox
|
||||||
as="div"
|
as="div"
|
||||||
onChange={(val: ISearchIssueResponse) => {
|
onChange={(val: ISearchIssueResponse) => {
|
||||||
@ -153,7 +153,7 @@ export const ExistingIssuesListModal: React.FC<Props> = (props) => {
|
|||||||
{selectedIssues.map((issue) => (
|
{selectedIssues.map((issue) => (
|
||||||
<div
|
<div
|
||||||
key={issue.id}
|
key={issue.id}
|
||||||
className="flex items-center gap-1 whitespace-nowrap rounded-md border border-neutral-border-medium bg-custom-background-80 py-1 pl-2 text-xs text-custom-text-100"
|
className="flex items-center gap-1 whitespace-nowrap rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark py-1 pl-2 text-xs text-custom-text-100"
|
||||||
>
|
>
|
||||||
{issue.project__identifier}-{issue.sequence_id}
|
{issue.project__identifier}-{issue.sequence_id}
|
||||||
<button
|
<button
|
||||||
@ -167,7 +167,7 @@ export const ExistingIssuesListModal: React.FC<Props> = (props) => {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="w-min whitespace-nowrap rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="w-min whitespace-nowrap rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
No issues selected
|
No issues selected
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@ -212,7 +212,7 @@ export const ExistingIssuesListModal: React.FC<Props> = (props) => {
|
|||||||
<LayersIcon height="52" width="52" />
|
<LayersIcon height="52" width="52" />
|
||||||
<h3 className="text-custom-text-200">
|
<h3 className="text-custom-text-200">
|
||||||
No issues found. Create a new issue with{" "}
|
No issues found. Create a new issue with{" "}
|
||||||
<pre className="inline rounded bg-custom-background-80 px-2 py-1 text-sm">C</pre>.
|
<pre className="inline rounded bg-neutral-component-surface-dark px-2 py-1 text-sm">C</pre>.
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@ -237,7 +237,7 @@ export const ExistingIssuesListModal: React.FC<Props> = (props) => {
|
|||||||
value={issue}
|
value={issue}
|
||||||
className={({ active }) =>
|
className={({ active }) =>
|
||||||
`group flex w-full cursor-pointer select-none items-center justify-between gap-2 rounded-md px-3 py-2 text-custom-text-200 ${
|
`group flex w-full cursor-pointer select-none items-center justify-between gap-2 rounded-md px-3 py-2 text-custom-text-200 ${
|
||||||
active ? "bg-custom-background-80 text-custom-text-100" : ""
|
active ? "bg-neutral-component-surface-dark text-custom-text-100" : ""
|
||||||
} ${selected ? "text-custom-text-100" : ""}`
|
} ${selected ? "text-custom-text-100" : ""}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -194,7 +194,7 @@ export const GptAssistantPopover: React.FC<Props> = (props) => {
|
|||||||
>
|
>
|
||||||
<Popover.Panel
|
<Popover.Panel
|
||||||
as="div"
|
as="div"
|
||||||
className={`fixed z-10 flex flex-col w-full max-w-full min-w-[50rem] space-y-4 overflow-hidden rounded-[10px] border border-neutral-border-medium bg-custom-background-100 p-4 shadow ${className}`}
|
className={`fixed z-10 flex flex-col w-full max-w-full min-w-[50rem] space-y-4 overflow-hidden rounded-[10px] border border-neutral-border-medium bg-neutral-component-surface-light p-4 shadow ${className}`}
|
||||||
ref={setPopperElement}
|
ref={setPopperElement}
|
||||||
style={styles.popper}
|
style={styles.popper}
|
||||||
{...attributes.popper}
|
{...attributes.popper}
|
||||||
|
@ -90,7 +90,7 @@ export const LinkModal: FC<Props> = (props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-custom-background-100 px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-neutral-component-surface-light px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:my-8 sm:w-full sm:max-w-2xl sm:p-6">
|
||||||
<form onSubmit={handleSubmit(handleCreateUpdatePage)}>
|
<form onSubmit={handleSubmit(handleCreateUpdatePage)}>
|
||||||
<div>
|
<div>
|
||||||
<div className="space-y-5">
|
<div className="space-y-5">
|
||||||
|
@ -111,7 +111,7 @@ export const UserImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-custom-background-100 px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-xl sm:p-6">
|
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-neutral-component-surface-light px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-xl sm:p-6">
|
||||||
<div className="space-y-5">
|
<div className="space-y-5">
|
||||||
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
||||||
Upload Image
|
Upload Image
|
||||||
@ -122,7 +122,7 @@ export const UserImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
{...getRootProps()}
|
{...getRootProps()}
|
||||||
className={`relative grid h-80 w-80 cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
className={`relative grid h-80 w-80 cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
||||||
(image === null && isDragActive) || !value
|
(image === null && isDragActive) || !value
|
||||||
? "border-2 border-dashed border-neutral-border-medium hover:bg-custom-background-90"
|
? "border-2 border-dashed border-neutral-border-medium hover:bg-neutral-component-surface-medium"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
@ -130,7 +130,7 @@ export const UserImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
<>
|
<>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="absolute right-0 top-0 z-40 -translate-y-1/2 translate-x-1/2 rounded bg-custom-background-90 px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
className="absolute right-0 top-0 z-40 -translate-y-1/2 translate-x-1/2 rounded bg-neutral-component-surface-medium px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
</button>
|
</button>
|
||||||
|
@ -118,7 +118,7 @@ export const WorkspaceImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
leaveFrom="opacity-100 translate-y-0 sm:scale-100"
|
||||||
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-custom-background-100 px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-xl sm:p-6">
|
<Dialog.Panel className="relative transform overflow-hidden rounded-lg bg-neutral-component-surface-light px-5 py-8 text-left shadow-custom-shadow-md transition-all sm:w-full sm:max-w-xl sm:p-6">
|
||||||
<div className="space-y-5">
|
<div className="space-y-5">
|
||||||
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
<Dialog.Title as="h3" className="text-lg font-medium leading-6 text-custom-text-100">
|
||||||
Upload Image
|
Upload Image
|
||||||
@ -129,7 +129,7 @@ export const WorkspaceImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
{...getRootProps()}
|
{...getRootProps()}
|
||||||
className={`relative grid h-80 w-80 cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
className={`relative grid h-80 w-80 cursor-pointer place-items-center rounded-lg p-12 text-center focus:outline-none focus:ring-2 focus:ring-custom-primary focus:ring-offset-2 ${
|
||||||
(image === null && isDragActive) || !value
|
(image === null && isDragActive) || !value
|
||||||
? "border-2 border-dashed border-neutral-border-medium hover:bg-custom-background-90"
|
? "border-2 border-dashed border-neutral-border-medium hover:bg-neutral-component-surface-medium"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
@ -137,7 +137,7 @@ export const WorkspaceImageUploadModal: React.FC<Props> = observer((props) => {
|
|||||||
<>
|
<>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="absolute right-0 top-0 z-40 -translate-y-1/2 translate-x-1/2 rounded bg-custom-background-90 px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
className="absolute right-0 top-0 z-40 -translate-y-1/2 translate-x-1/2 rounded bg-neutral-component-surface-medium px-2 py-0.5 text-xs font-medium text-custom-text-200"
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
</button>
|
</button>
|
||||||
|
@ -34,7 +34,7 @@ export const LinksList: React.FC<Props> = ({ links, handleDeleteLink, handleEdit
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{links.map((link) => (
|
{links.map((link) => (
|
||||||
<div key={link.id} className="relative flex flex-col rounded-md bg-custom-background-90 p-2.5">
|
<div key={link.id} className="relative flex flex-col rounded-md bg-neutral-component-surface-medium p-2.5">
|
||||||
<div className="flex w-full items-start justify-between gap-2">
|
<div className="flex w-full items-start justify-between gap-2">
|
||||||
<div className="flex items-start gap-2 truncate">
|
<div className="flex items-start gap-2 truncate">
|
||||||
<span className="py-1">
|
<span className="py-1">
|
||||||
@ -54,7 +54,7 @@ export const LinksList: React.FC<Props> = ({ links, handleDeleteLink, handleEdit
|
|||||||
<div className="z-[1] flex flex-shrink-0 items-center gap-2">
|
<div className="z-[1] flex flex-shrink-0 items-center gap-2">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex items-center justify-center p-1 hover:bg-custom-background-80"
|
className="flex items-center justify-center p-1 hover:bg-neutral-component-surface-dark"
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@ -67,13 +67,13 @@ export const LinksList: React.FC<Props> = ({ links, handleDeleteLink, handleEdit
|
|||||||
href={link.url}
|
href={link.url}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex items-center justify-center p-1 hover:bg-custom-background-80"
|
className="flex items-center justify-center p-1 hover:bg-neutral-component-surface-dark"
|
||||||
>
|
>
|
||||||
<ExternalLinkIcon className="h-3 w-3 stroke-[1.5] text-custom-text-200" />
|
<ExternalLinkIcon className="h-3 w-3 stroke-[1.5] text-custom-text-200" />
|
||||||
</a>
|
</a>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="flex items-center justify-center p-1 hover:bg-custom-background-80"
|
className="flex items-center justify-center p-1 hover:bg-neutral-component-surface-dark"
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
@ -124,7 +124,7 @@ const ProgressChart: React.FC<Props> = ({ distribution, startDate, endDate, tota
|
|||||||
gridXValues={chartData.map((item, index) => (index % 2 === 0 ? item.currentDate : ""))}
|
gridXValues={chartData.map((item, index) => (index % 2 === 0 ? item.currentDate : ""))}
|
||||||
enableSlices="x"
|
enableSlices="x"
|
||||||
sliceTooltip={(datum) => (
|
sliceTooltip={(datum) => (
|
||||||
<div className="rounded-md border border-neutral-border-medium bg-custom-background-80 p-2 text-xs">
|
<div className="rounded-md border border-neutral-border-medium bg-neutral-component-surface-dark p-2 text-xs">
|
||||||
{datum.slice.points[0].data.yFormatted}
|
{datum.slice.points[0].data.yFormatted}
|
||||||
<span className="text-custom-text-200"> issues pending on </span>
|
<span className="text-custom-text-200"> issues pending on </span>
|
||||||
{datum.slice.points[0].data.xFormatted}
|
{datum.slice.points[0].data.xFormatted}
|
||||||
|
@ -80,7 +80,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
<Tab.List
|
<Tab.List
|
||||||
as="div"
|
as="div"
|
||||||
className={`flex w-full items-center justify-between gap-2 rounded-md ${
|
className={`flex w-full items-center justify-between gap-2 rounded-md ${
|
||||||
noBackground ? "" : "bg-custom-background-90"
|
noBackground ? "" : "bg-neutral-component-surface-medium"
|
||||||
} p-0.5
|
} p-0.5
|
||||||
${module ? "text-xs" : "text-sm"}`}
|
${module ? "text-xs" : "text-sm"}`}
|
||||||
>
|
>
|
||||||
@ -90,7 +90,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
||||||
} px-3 py-1 text-custom-text-100 ${
|
} px-3 py-1 text-custom-text-100 ${
|
||||||
selected
|
selected
|
||||||
? "bg-custom-background-100 text-custom-text-300 shadow-custom-shadow-2xs"
|
? "bg-neutral-component-surface-light text-custom-text-300 shadow-custom-shadow-2xs"
|
||||||
: "text-custom-text-400 hover:text-custom-text-300"
|
: "text-custom-text-400 hover:text-custom-text-300"
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
||||||
} px-3 py-1 text-custom-text-100 ${
|
} px-3 py-1 text-custom-text-100 ${
|
||||||
selected
|
selected
|
||||||
? "bg-custom-background-100 text-custom-text-300 shadow-custom-shadow-2xs"
|
? "bg-neutral-component-surface-light text-custom-text-300 shadow-custom-shadow-2xs"
|
||||||
: "text-custom-text-400 hover:text-custom-text-300"
|
: "text-custom-text-400 hover:text-custom-text-300"
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
roundedTab ? "rounded-3xl border border-neutral-border-medium" : "rounded"
|
||||||
} px-3 py-1 text-custom-text-100 ${
|
} px-3 py-1 text-custom-text-100 ${
|
||||||
selected
|
selected
|
||||||
? "bg-custom-background-100 text-custom-text-300 shadow-custom-shadow-2xs"
|
? "bg-neutral-component-surface-light text-custom-text-300 shadow-custom-shadow-2xs"
|
||||||
: "text-custom-text-400 hover:text-custom-text-300"
|
: "text-custom-text-400 hover:text-custom-text-300"
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
key={`unassigned-${index}`}
|
key={`unassigned-${index}`}
|
||||||
title={
|
title={
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div className="h-4 w-4 rounded-full border-2 border-neutral-border-medium bg-custom-background-80">
|
<div className="h-4 w-4 rounded-full border-2 border-neutral-border-medium bg-neutral-component-surface-dark">
|
||||||
<img src="/user.png" height="100%" width="100%" className="rounded-full" alt="User" />
|
<img src="/user.png" height="100%" width="100%" className="rounded-full" alt="User" />
|
||||||
</div>
|
</div>
|
||||||
<span>No assignee</span>
|
<span>No assignee</span>
|
||||||
@ -175,7 +175,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
})
|
})
|
||||||
) : (
|
) : (
|
||||||
<div className="flex h-full flex-col items-center justify-center gap-2">
|
<div className="flex h-full flex-col items-center justify-center gap-2">
|
||||||
<div className="flex h-20 w-20 items-center justify-center rounded-full bg-custom-background-80">
|
<div className="flex h-20 w-20 items-center justify-center rounded-full bg-neutral-component-surface-dark">
|
||||||
<Image src={emptyMembers} className="h-12 w-12" alt="empty members" />
|
<Image src={emptyMembers} className="h-12 w-12" alt="empty members" />
|
||||||
</div>
|
</div>
|
||||||
<h6 className="text-base text-custom-text-300">No assignees yet</h6>
|
<h6 className="text-base text-custom-text-300">No assignees yet</h6>
|
||||||
@ -215,7 +215,7 @@ export const SidebarProgressStats: React.FC<Props> = ({
|
|||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
<div className="flex h-full flex-col items-center justify-center gap-2">
|
<div className="flex h-full flex-col items-center justify-center gap-2">
|
||||||
<div className="flex h-20 w-20 items-center justify-center rounded-full bg-custom-background-80">
|
<div className="flex h-20 w-20 items-center justify-center rounded-full bg-neutral-component-surface-dark">
|
||||||
<Image src={emptyLabel} className="h-12 w-12" alt="empty label" />
|
<Image src={emptyLabel} className="h-12 w-12" alt="empty label" />
|
||||||
</div>
|
</div>
|
||||||
<h6 className="text-base text-custom-text-300">No labels yet</h6>
|
<h6 className="text-base text-custom-text-300">No labels yet</h6>
|
||||||
|
@ -19,8 +19,8 @@ export const SingleProgressStats: React.FC<TSingleProgressStatsProps> = ({
|
|||||||
}) => (
|
}) => (
|
||||||
<div
|
<div
|
||||||
className={`flex w-full items-center justify-between gap-4 rounded-sm p-1 text-xs ${
|
className={`flex w-full items-center justify-between gap-4 rounded-sm p-1 text-xs ${
|
||||||
onClick ? "cursor-pointer hover:bg-custom-background-90" : ""
|
onClick ? "cursor-pointer hover:bg-neutral-component-surface-medium" : ""
|
||||||
} ${selected ? "bg-custom-background-90" : ""}`}
|
} ${selected ? "bg-neutral-component-surface-medium" : ""}`}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
<div className="w-1/2">{title}</div>
|
<div className="w-1/2">{title}</div>
|
||||||
|
@ -147,7 +147,7 @@ export const ActiveCycleDetails: React.FC<IActiveCycleDetails> = observer((props
|
|||||||
const daysLeft = findHowManyDaysLeft(activeCycle.end_date ?? new Date());
|
const daysLeft = findHowManyDaysLeft(activeCycle.end_date ?? new Date());
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="grid-row-2 grid divide-y rounded-[10px] border border-neutral-border-medium bg-custom-background-100 shadow">
|
<div className="grid-row-2 grid divide-y rounded-[10px] border border-neutral-border-medium bg-neutral-component-surface-light shadow">
|
||||||
<div className="grid grid-cols-1 divide-y border-neutral-border-medium lg:grid-cols-3 lg:divide-x lg:divide-y-0">
|
<div className="grid grid-cols-1 divide-y border-neutral-border-medium lg:grid-cols-3 lg:divide-x lg:divide-y-0">
|
||||||
<div className="flex flex-col text-xs">
|
<div className="flex flex-col text-xs">
|
||||||
<div className="h-full w-full">
|
<div className="h-full w-full">
|
||||||
@ -208,7 +208,7 @@ export const ActiveCycleDetails: React.FC<IActiveCycleDetails> = observer((props
|
|||||||
alt={activeCycle.owned_by.display_name}
|
alt={activeCycle.owned_by.display_name}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<span className="flex h-5 w-5 items-center justify-center rounded-full bg-custom-background-100 capitalize">
|
<span className="flex h-5 w-5 items-center justify-center rounded-full bg-neutral-component-surface-light capitalize">
|
||||||
{activeCycle.owned_by.display_name.charAt(0)}
|
{activeCycle.owned_by.display_name.charAt(0)}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
@ -317,7 +317,7 @@ export const ActiveCycleDetails: React.FC<IActiveCycleDetails> = observer((props
|
|||||||
/>
|
/>
|
||||||
{issue.target_date && (
|
{issue.target_date && (
|
||||||
<Tooltip tooltipHeading="Target Date" tooltipContent={renderFormattedDate(issue.target_date)}>
|
<Tooltip tooltipHeading="Target Date" tooltipContent={renderFormattedDate(issue.target_date)}>
|
||||||
<div className="h-full flex items-center gap-1.5 rounded text-xs px-2 py-0.5 bg-custom-background-80 cursor-not-allowed">
|
<div className="h-full flex items-center gap-1.5 rounded text-xs px-2 py-0.5 bg-neutral-component-surface-dark cursor-not-allowed">
|
||||||
<CalendarCheck className="h-3 w-3 flex-shrink-0" />
|
<CalendarCheck className="h-3 w-3 flex-shrink-0" />
|
||||||
<span className="text-xs">{renderFormattedDateWithoutYear(issue.target_date)}</span>
|
<span className="text-xs">{renderFormattedDateWithoutYear(issue.target_date)}</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -46,12 +46,12 @@ export const ActiveCycleProgressStats: React.FC<Props> = ({ cycle }) => {
|
|||||||
>
|
>
|
||||||
<Tab.List
|
<Tab.List
|
||||||
as="div"
|
as="div"
|
||||||
className="sticky top-0 z-10 flex w-full flex-wrap items-center justify-start gap-4 bg-custom-background-100 px-4 pb-1 pt-4 text-sm"
|
className="sticky top-0 z-10 flex w-full flex-wrap items-center justify-start gap-4 bg-neutral-component-surface-light px-4 pb-1 pt-4 text-sm"
|
||||||
>
|
>
|
||||||
<Tab
|
<Tab
|
||||||
className={({ selected }) =>
|
className={({ selected }) =>
|
||||||
`rounded-3xl border border-neutral-border-medium px-3 py-1 text-custom-text-100 ${
|
`rounded-3xl border border-neutral-border-medium px-3 py-1 text-custom-text-100 ${
|
||||||
selected ? " bg-custom-primary text-white" : " hover:bg-custom-background-80"
|
selected ? " bg-custom-primary text-white" : " hover:bg-neutral-component-surface-dark"
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
@ -60,7 +60,7 @@ export const ActiveCycleProgressStats: React.FC<Props> = ({ cycle }) => {
|
|||||||
<Tab
|
<Tab
|
||||||
className={({ selected }) =>
|
className={({ selected }) =>
|
||||||
`rounded-3xl border border-neutral-border-medium px-3 py-1 text-custom-text-100 ${
|
`rounded-3xl border border-neutral-border-medium px-3 py-1 text-custom-text-100 ${
|
||||||
selected ? " bg-custom-primary text-white" : " hover:bg-custom-background-80"
|
selected ? " bg-custom-primary text-white" : " hover:bg-neutral-component-surface-dark"
|
||||||
}`
|
}`
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
@ -92,7 +92,7 @@ export const ActiveCycleProgressStats: React.FC<Props> = ({ cycle }) => {
|
|||||||
key={`unassigned-${index}`}
|
key={`unassigned-${index}`}
|
||||||
title={
|
title={
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div className="h-5 w-5 rounded-full border-2 border-neutral-border-medium bg-custom-background-80">
|
<div className="h-5 w-5 rounded-full border-2 border-neutral-border-medium bg-neutral-component-surface-dark">
|
||||||
<img src="/user.png" height="100%" width="100%" className="rounded-full" alt="User" />
|
<img src="/user.png" height="100%" width="100%" className="rounded-full" alt="User" />
|
||||||
</div>
|
</div>
|
||||||
<span>No assignee</span>
|
<span>No assignee</span>
|
||||||
|
@ -38,7 +38,7 @@ export const CyclePeekOverview: React.FC<Props> = observer(({ projectId, workspa
|
|||||||
{peekCycle && (
|
{peekCycle && (
|
||||||
<div
|
<div
|
||||||
ref={ref}
|
ref={ref}
|
||||||
className="flex h-full w-[24rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-neutral-border-subtle bg-custom-sidebar-background-100 px-6 py-3.5 duration-300"
|
className="flex h-full w-[24rem] flex-shrink-0 flex-col gap-3.5 overflow-y-auto border-l border-neutral-border-subtle bg-sidebar-neutral-component-surface-light px-6 py-3.5 duration-300"
|
||||||
style={{
|
style={{
|
||||||
boxShadow:
|
boxShadow:
|
||||||
"0px 1px 4px 0px rgba(0, 0, 0, 0.06), 0px 2px 4px 0px rgba(16, 24, 40, 0.06), 0px 1px 8px -1px rgba(16, 24, 40, 0.06)",
|
"0px 1px 4px 0px rgba(0, 0, 0, 0.06), 0px 2px 4px 0px rgba(16, 24, 40, 0.06), 0px 1px 8px -1px rgba(16, 24, 40, 0.06)",
|
||||||
|
@ -159,7 +159,7 @@ export const CyclesBoardCard: FC<ICyclesBoardCard> = (props) => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<Link href={`/${workspaceSlug}/projects/${projectId}/cycles/${cycleDetails.id}`}>
|
<Link href={`/${workspaceSlug}/projects/${projectId}/cycles/${cycleDetails.id}`}>
|
||||||
<div className="flex h-44 w-full min-w-[250px] flex-col justify-between rounded border border-neutral-border-subtle bg-custom-background-100 p-4 text-sm hover:shadow-md">
|
<div className="flex h-44 w-full min-w-[250px] flex-col justify-between rounded border border-neutral-border-subtle bg-neutral-component-surface-light p-4 text-sm hover:shadow-md">
|
||||||
<div className="flex items-center justify-between gap-2">
|
<div className="flex items-center justify-between gap-2">
|
||||||
<div className="flex items-center gap-3 truncate">
|
<div className="flex items-center gap-3 truncate">
|
||||||
<span className="flex-shrink-0">
|
<span className="flex-shrink-0">
|
||||||
@ -214,7 +214,7 @@ export const CyclesBoardCard: FC<ICyclesBoardCard> = (props) => {
|
|||||||
>
|
>
|
||||||
<div className="flex w-full items-center">
|
<div className="flex w-full items-center">
|
||||||
<div
|
<div
|
||||||
className="bar relative h-1.5 w-full rounded bg-custom-background-90"
|
className="bar relative h-1.5 w-full rounded bg-neutral-component-surface-medium"
|
||||||
style={{
|
style={{
|
||||||
boxShadow: "1px 1px 4px 0px rgba(161, 169, 191, 0.35) inset",
|
boxShadow: "1px 1px 4px 0px rgba(161, 169, 191, 0.35) inset",
|
||||||
}}
|
}}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user