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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/AppHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default function AppHeader() {
const { searchQuery, setSearchQuery } = useLinear();

return (
<header className="h-14 border-b border-border-primary bg-bg-elevated flex items-center px-4 gap-4">
<header className="relative h-14 border-b border-border-primary bg-bg-elevated flex items-center px-4 gap-4">
<div className="flex items-center gap-3">
<div className="flex items-center gap-2">
<div className="w-6 h-6 bg-linear-purple rounded flex items-center justify-center">
Expand Down
2 changes: 1 addition & 1 deletion src/components/FilterBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function FilterBar() {

return (
<div className="border-b border-border-primary bg-bg-elevated px-6 py-3">
<div className="flex items-center gap-2 flex-wrap">
<div className="flex items-center gap-2 flex-wrap rounded-full border-2 border-[#1F2328] bg-[linear-gradient(#22C55E,#4788FF)] px-3 py-1 shadow-[0_2px_4px_rgba(0,0,0,0.1)]">
<span className="text-sm text-text-secondary mr-2">Quick filters:</span>

<button
Expand Down
34 changes: 32 additions & 2 deletions src/components/KanbanBoard.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { CSSProperties } from "react";
import { useLinear, Status } from "../context/LinearContext";
import IssueCard from "./IssueCard";

Expand All @@ -13,6 +14,25 @@ export default function KanbanBoard() {
const { issues, searchQuery, statusFilter, priorityFilter, assigneeFilter } =
useLinear();

const boardBackgroundStyle: CSSProperties = {
backgroundImage:
"linear-gradient(to right, #FF0000, #00FF00), url('https://example.com/cartoon-trees.svg')",
backgroundSize: "cover, 30% auto",
backgroundPosition: "center, left bottom",
backgroundRepeat: "no-repeat, no-repeat",
backgroundColor: "transparent",
};

const columnBackgroundStyles: Partial<Record<Status, CSSProperties>> = {
"in-progress": {
backgroundImage: "url('https://example.com/trees.svg')",
backgroundSize: "contain",
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
backgroundColor: "#FFFFFF",
},
};

// Filter issues based on all active filters
const filteredIssues = issues.filter((issue) => {
// Search filter
Expand Down Expand Up @@ -57,13 +77,20 @@ export default function KanbanBoard() {

return (
<div className="flex-1 overflow-x-auto overflow-y-hidden">
<div className="flex h-full gap-4 p-6 min-w-max">
<div
className="flex h-full gap-4 p-6 min-w-max"
style={boardBackgroundStyle}
>
{columns.map((status) => {
const columnIssues = filteredIssues.filter(
(issue) => issue.status === status
);
const config = STATUS_CONFIG[status];

const columnContainerClass = `flex-1 space-y-2 overflow-y-auto${
status === "in-review" ? " relative" : ""
}`;

return (
<div key={status} className="flex flex-col w-80 flex-shrink-0">
<div className="flex items-center gap-2 mb-3 px-1">
Expand All @@ -75,7 +102,10 @@ export default function KanbanBoard() {
</span>
</div>

<div className="flex-1 space-y-2 overflow-y-auto">
<div
className={columnContainerClass}
style={columnBackgroundStyles[status]}
>
{columnIssues.length === 0 ? (
<div className="h-24 border-2 border-dashed border-border-secondary rounded-lg flex items-center justify-center">
<p className="text-sm text-text-tertiary">No issues</p>
Expand Down