@devalok/shilp-sutra-karm 0.3.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,25 +1,32 @@
1
1
  # @devalok/shilp-sutra-karm
2
2
 
3
- Domain components for project management -- board, tasks, chat, dashboard, client portal, and admin.
3
+ Domain-specific UI components for project management applications -- kanban boards, task panels, AI chat, attendance dashboards, client portals, and admin tools.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@devalok/shilp-sutra-karm)](https://www.npmjs.com/package/@devalok/shilp-sutra-karm)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
8
  ---
9
9
 
10
+ ## When to use Karm vs Core
11
+
12
+ | Need | Package |
13
+ |------|---------|
14
+ | Generic UI primitives (Button, Dialog, Table, Badge, etc.) | `@devalok/shilp-sutra` (core) |
15
+ | Project management features (boards, tasks, chat, admin) | `@devalok/shilp-sutra-karm` |
16
+
17
+ Karm builds on top of core. It provides opinionated, domain-specific components that combine multiple core primitives into ready-to-use features for project management and team collaboration apps.
18
+
10
19
  ## Install
11
20
 
12
21
  ```bash
13
22
  pnpm add @devalok/shilp-sutra-karm @devalok/shilp-sutra
14
23
  ```
15
24
 
16
- **Note:** `@devalok/shilp-sutra >=0.3.0` is a required peer dependency.
17
-
18
25
  ## Peer Dependencies
19
26
 
20
27
  | Package | Version | Required |
21
28
  |---------|---------|----------|
22
- | `@devalok/shilp-sutra` | `>=0.3.0` | Yes |
29
+ | `@devalok/shilp-sutra` | `>=0.1.0` | Yes |
23
30
  | `react` | `^18 \|\| ^19` | Yes |
24
31
  | `react-dom` | `^18 \|\| ^19` | Yes |
25
32
 
@@ -32,15 +39,99 @@ import { KanbanBoard } from '@devalok/shilp-sutra-karm/board'
32
39
  import { TaskDetailPanel } from '@devalok/shilp-sutra-karm/tasks'
33
40
  import { ChatPanel } from '@devalok/shilp-sutra-karm/chat'
34
41
  import { AttendanceCTA, DailyBrief } from '@devalok/shilp-sutra-karm/dashboard'
35
- import { ClientHeader, ProjectCard } from '@devalok/shilp-sutra-karm/client'
42
+ import { ClientPortalHeader, ProjectCard } from '@devalok/shilp-sutra-karm/client'
36
43
  import { AdminDashboard, BreakAdmin } from '@devalok/shilp-sutra-karm/admin'
37
44
  ```
38
45
 
46
+ ## Component Inventory
47
+
48
+ ### Board (`@devalok/shilp-sutra-karm/board`)
49
+
50
+ Drag-and-drop kanban board with sortable columns and task cards.
51
+
52
+ | Component | Description |
53
+ |-----------|-------------|
54
+ | `KanbanBoard` | Full kanban board with columns, drag-and-drop, and task management |
55
+ | `BoardColumn` | Single sortable column with task list and add-task action |
56
+ | `TaskCard` | Draggable task card with priority, labels, assignees, and due date |
57
+
58
+ ### Tasks (`@devalok/shilp-sutra-karm/tasks`)
59
+
60
+ Task detail panel with tabbed content (conversation, files, subtasks, reviews, activity).
61
+
62
+ | Component | Description |
63
+ |-----------|-------------|
64
+ | `TaskDetailPanel` | Sheet-based task detail view with all tabs |
65
+ | `TaskProperties` | Editable task metadata (status, priority, assignees, dates) |
66
+ | `ConversationTab` | Threaded comments on a task |
67
+ | `FilesTab` | File attachments with upload and delete |
68
+ | `SubtasksTab` | Nested subtask list with create and status toggle |
69
+ | `ReviewTab` | Review request and approval workflow |
70
+ | `ActivityTab` | Audit log of task changes |
71
+
72
+ ### Chat (`@devalok/shilp-sutra-karm/chat`)
73
+
74
+ AI-powered chat panel with streaming support and conversation history.
75
+
76
+ | Component | Description |
77
+ |-----------|-------------|
78
+ | `ChatPanel` | Full chat interface with conversation list and message area |
79
+ | `ChatInput` | Message input with agent selector and submit |
80
+ | `MessageList` | Scrollable message thread with markdown rendering |
81
+ | `ConversationList` | Sidebar list of past conversations |
82
+ | `StreamingText` | Animated streaming text display for AI responses |
83
+
84
+ ### Dashboard (`@devalok/shilp-sutra-karm/dashboard`)
85
+
86
+ Employee-facing attendance and daily brief widgets.
87
+
88
+ | Component | Description |
89
+ |-----------|-------------|
90
+ | `AttendanceCTA` | Attendance marking card with status display |
91
+ | `DailyBrief` | Daily summary card with tasks, meetings, and announcements |
92
+
93
+ ### Client (`@devalok/shilp-sutra-karm/client`)
94
+
95
+ Client portal components with brand accent theming.
96
+
97
+ | Component | Description |
98
+ |-----------|-------------|
99
+ | `ClientPortalHeader` | Portal header with org branding and user menu |
100
+ | `ProjectCard` | Project summary card for client-facing views |
101
+ | `AccentProvider` | CSS custom property provider for client brand colors |
102
+
103
+ ### Admin (`@devalok/shilp-sutra-karm/admin`)
104
+
105
+ Admin dashboard, break/leave management, attendance tracking, and adjustments.
106
+
107
+ | Component | Description |
108
+ |-----------|-------------|
109
+ | `AdminDashboard` | Compound admin view with attendance overview, calendar, and associate detail |
110
+ | `BreakAdmin` | Compound break management panel (header, balance, breaks list, requests) |
111
+ | `BreakAdminHeader` | Filter bar for break admin |
112
+ | `BreakBalance` | Break balance summary table with edit |
113
+ | `Breaks` | Break list with edit and delete actions |
114
+ | `EditBreak` | Break edit dialog |
115
+ | `DeleteBreak` | Break delete confirmation dialog |
116
+ | `EditBreakBalance` | Balance adjustment dialog |
117
+ | `LeaveRequest` | Individual leave request card with approve/reject |
118
+ | `LeaveRequests` | Pending leave requests list |
119
+ | `AttendanceOverview` | Team attendance summary cards |
120
+ | `AssociateDetail` | Individual associate detail with attendance, tasks, and breaks |
121
+ | `DashboardHeader` | Admin dashboard header with date and user selector |
122
+ | `Calendar` | Monthly attendance calendar with day status |
123
+ | `CorrectionList` | Attendance correction requests list |
124
+ | `RenderDate` | Date display utility component |
125
+ | `ApprovedAdjustments` | Approved break adjustment history table |
126
+ | `BreakAdminSkeleton` | Loading skeleton for BreakAdmin |
127
+ | `DashboardSkeleton` | Loading skeleton for AdminDashboard |
128
+ | `renderAdjustmentType` | Utility to render adjustment type labels |
129
+
39
130
  ## Sub-path Exports
40
131
 
41
132
  | Import path | Contents |
42
133
  |-------------|----------|
43
- | `@devalok/shilp-sutra-karm` | All domain components |
134
+ | `@devalok/shilp-sutra-karm` | All domain components (barrel) |
44
135
  | `@devalok/shilp-sutra-karm/board` | Kanban board with drag-and-drop |
45
136
  | `@devalok/shilp-sutra-karm/tasks` | Task detail panel, properties, tabs |
46
137
  | `@devalok/shilp-sutra-karm/chat` | AI chat panel, message list, streaming |
@@ -84,7 +84,7 @@ const L = B.forwardRef(
84
84
  ] }),
85
85
  /* @__PURE__ */ e("span", { className: "text-success-text", children: "approved successfully" })
86
86
  ] }),
87
- color: "default",
87
+ color: "neutral",
88
88
  style: { marginBottom: "var(--spacing-04)", border: "none" }
89
89
  });
90
90
  } catch (r) {
@@ -119,7 +119,7 @@ const L = B.forwardRef(
119
119
  ] }),
120
120
  /* @__PURE__ */ e("span", { className: "text-error-text", children: "rejected" })
121
121
  ] }),
122
- color: "default",
122
+ color: "neutral",
123
123
  style: { marginBottom: "var(--spacing-04)", border: "none" }
124
124
  });
125
125
  } catch (r) {
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { jsxs as r, jsx as t } from "react/jsx-runtime";
3
3
  import * as u from "react";
4
- import { useState as d, useRef as p } from "react";
4
+ import { useState as c, useRef as p } from "react";
5
5
  import { useToast as x } from "@devalok/shilp-sutra/hooks";
6
6
  import { Dialog as h, DialogTrigger as g, DialogContent as b } from "@devalok/shilp-sutra/ui";
7
7
  import { Button as D } from "@devalok/shilp-sutra/ui";
8
8
  import { IconButton as k } from "@devalok/shilp-sutra/ui";
9
9
  import { IconTrash as w } from "@tabler/icons-react";
10
10
  const y = u.forwardRef(function({ id: B, userId: v, onDelete: l }, I) {
11
- const [c, s] = d(!1), { toast: a } = x(), [m, o] = d(!1), i = p(null);
11
+ const [d, s] = c(!1), { toast: a } = x(), [m, o] = c(!1), i = p(null);
12
12
  return /* @__PURE__ */ r(h, { open: m, onOpenChange: o, children: [
13
13
  /* @__PURE__ */ t(g, { asChild: !0, children: /* @__PURE__ */ t(k, { icon: /* @__PURE__ */ t(w, {}), size: "md", "aria-label": "Delete break" }) }),
14
14
  /* @__PURE__ */ r(b, { className: "flex w-[335px] flex-col items-center gap-ds-06 p-ds-06 max-md:w-[90%] max-md:rounded-ds-lg", children: [
@@ -22,7 +22,7 @@ const y = u.forwardRef(function({ id: B, userId: v, onDelete: l }, I) {
22
22
  try {
23
23
  l && l(), a({
24
24
  description: "Break request deleted successfully",
25
- color: "default"
25
+ color: "neutral"
26
26
  }), o(!1);
27
27
  } catch (f) {
28
28
  console.error("Error deleting break request:", f), a({
@@ -42,7 +42,7 @@ const y = u.forwardRef(function({ id: B, userId: v, onDelete: l }, I) {
42
42
  var e;
43
43
  return (e = i.current) == null ? void 0 : e.requestSubmit();
44
44
  },
45
- disabled: c,
45
+ disabled: d,
46
46
  children: "Yes, Delete"
47
47
  }
48
48
  ) })
@@ -14,9 +14,9 @@ const I = y.forwardRef(function({
14
14
  var e;
15
15
  const [s, l] = o(!1), [c, u] = o(
16
16
  typeof (r == null ? void 0 : r.cashout) == "number" ? r.cashout : 0
17
- ), [d, h] = o(
17
+ ), [m, h] = o(
18
18
  (r == null ? void 0 : r.carryForward) || 0
19
- ), m = w(null), { toast: f } = N();
19
+ ), d = w(null), { toast: f } = N();
20
20
  g(() => {
21
21
  u(
22
22
  typeof (r == null ? void 0 : r.cashout) == "number" ? r.cashout : 0
@@ -28,11 +28,11 @@ const I = y.forwardRef(function({
28
28
  n && n({
29
29
  userId: r.userId,
30
30
  cashOutDays: c,
31
- carryForward: d,
31
+ carryForward: m,
32
32
  year: (/* @__PURE__ */ new Date()).getFullYear()
33
33
  }), f({
34
34
  description: "Break balance updated successfully",
35
- color: "default"
35
+ color: "neutral"
36
36
  });
37
37
  } catch (x) {
38
38
  console.error("Error updating break balance:", x), f({
@@ -65,7 +65,7 @@ const I = y.forwardRef(function({
65
65
  /* @__PURE__ */ a(
66
66
  "form",
67
67
  {
68
- ref: m,
68
+ ref: d,
69
69
  onSubmit: b,
70
70
  id: "updatebreakbalanceform",
71
71
  className: "flex w-full flex-col gap-ds-05",
@@ -86,7 +86,7 @@ const I = y.forwardRef(function({
86
86
  ] }),
87
87
  /* @__PURE__ */ a("div", { className: "flex w-full items-center justify-between", children: [
88
88
  /* @__PURE__ */ t("div", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-placeholder", children: "Carry forward" }),
89
- /* @__PURE__ */ t("div", { className: "flex w-[100px] items-center justify-center", children: /* @__PURE__ */ t("div", { className: "text-ds-base font-semibold text-text-secondary", children: d }) })
89
+ /* @__PURE__ */ t("div", { className: "flex w-[100px] items-center justify-center", children: /* @__PURE__ */ t("div", { className: "text-ds-base font-semibold text-text-secondary", children: m }) })
90
90
  ] }),
91
91
  /* @__PURE__ */ t(
92
92
  p,
@@ -95,7 +95,7 @@ const I = y.forwardRef(function({
95
95
  fullWidth: !0,
96
96
  onClick: () => {
97
97
  var i;
98
- return (i = m.current) == null ? void 0 : i.requestSubmit();
98
+ return (i = d.current) == null ? void 0 : i.requestSubmit();
99
99
  },
100
100
  disabled: s,
101
101
  children: "Update"
@@ -81,7 +81,7 @@ const bt = X.forwardRef(function({
81
81
  m({
82
82
  title: "Action Required",
83
83
  description: "Please update the status",
84
- color: "default"
84
+ color: "neutral"
85
85
  });
86
86
  return;
87
87
  }
@@ -97,7 +97,7 @@ const bt = X.forwardRef(function({
97
97
  isEditing: !0
98
98
  }), m({
99
99
  description: "Break request updated successfully",
100
- color: "default"
100
+ color: "neutral"
101
101
  });
102
102
  } catch (a) {
103
103
  console.error("Error updating break request:", a), m({
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsxs as a, jsx as r } from "react/jsx-runtime";
2
+ import { jsxs as r, jsx as a } from "react/jsx-runtime";
3
3
  import * as v from "react";
4
4
  import { DropdownMenu as g, DropdownMenuTrigger as y, DropdownMenuContent as b, DropdownMenuItem as w } from "@devalok/shilp-sutra/ui";
5
5
  import { SegmentedControl as D } from "@devalok/shilp-sutra/ui";
@@ -10,28 +10,28 @@ import { format as o } from "date-fns";
10
10
  import { IconChevronDown as T, IconChevronLeft as C, IconChevronRight as k } from "@tabler/icons-react";
11
11
  const F = v.forwardRef(
12
12
  function({ onDateSelect: m, hasCorrection: i }, u) {
13
- const t = M(), c = (e) => {
13
+ const t = M(), d = (e) => {
14
14
  t.navigateDate(e);
15
15
  }, f = (e) => {
16
16
  t.selectMonth(e);
17
17
  }, p = () => {
18
- const e = [], d = new Date(t.currentDate).getFullYear();
18
+ const e = [], c = new Date(t.currentDate).getFullYear();
19
19
  for (let n = 0; n < 12; n++) {
20
- const x = new Date(d, n, 1);
21
- e.push(`${o(x, "MMMM")} ${d}`);
20
+ const x = new Date(c, n, 1);
21
+ e.push(`${o(x, "MMMM")} ${c}`);
22
22
  }
23
23
  return e;
24
24
  }, h = (e, l) => {
25
25
  t.activeTimeFrame === "weekly" ? t.selectDate(e, l) : t.selectDayMonthly(l), m(l);
26
26
  };
27
- return /* @__PURE__ */ a("div", { ref: u, className: "w-full", children: [
28
- /* @__PURE__ */ a("div", { className: "mb-ds-06 flex w-full items-center justify-start", children: [
29
- /* @__PURE__ */ a(g, { children: [
30
- /* @__PURE__ */ a(y, { className: "text-ds-xl flex items-center gap-ds-03 text-text-secondary", children: [
27
+ return /* @__PURE__ */ r("div", { ref: u, className: "w-full", children: [
28
+ /* @__PURE__ */ r("div", { className: "mb-ds-06 flex w-full items-center justify-start", children: [
29
+ /* @__PURE__ */ r(g, { children: [
30
+ /* @__PURE__ */ r(y, { className: "text-ds-xl flex items-center gap-ds-03 text-text-secondary", children: [
31
31
  t.selectedMonth,
32
- /* @__PURE__ */ r(T, {})
32
+ /* @__PURE__ */ a(T, {})
33
33
  ] }),
34
- /* @__PURE__ */ r(b, { children: p().map((e) => /* @__PURE__ */ r(
34
+ /* @__PURE__ */ a(b, { children: p().map((e) => /* @__PURE__ */ a(
35
35
  w,
36
36
  {
37
37
  onSelect: () => f(e),
@@ -40,12 +40,12 @@ const F = v.forwardRef(
40
40
  e
41
41
  )) })
42
42
  ] }),
43
- /* @__PURE__ */ a("div", { className: "ml-auto flex items-center gap-ds-05", children: [
44
- /* @__PURE__ */ r(
43
+ /* @__PURE__ */ r("div", { className: "ml-auto flex items-center gap-ds-05", children: [
44
+ /* @__PURE__ */ a(
45
45
  D,
46
46
  {
47
47
  size: "md",
48
- color: "tonal",
48
+ variant: "tonal",
49
49
  options: [
50
50
  { id: "weekly", text: "Weekly" },
51
51
  { id: "monthly", text: "Monthly" }
@@ -54,29 +54,29 @@ const F = v.forwardRef(
54
54
  onSelect: (e) => t.setActiveTimeFrame(e)
55
55
  }
56
56
  ),
57
- /* @__PURE__ */ a("div", { className: "flex gap-0", children: [
58
- /* @__PURE__ */ r(
57
+ /* @__PURE__ */ r("div", { className: "flex gap-0", children: [
58
+ /* @__PURE__ */ a(
59
59
  "button",
60
60
  {
61
61
  "aria-label": "Previous",
62
- onClick: () => c("prev"),
62
+ onClick: () => d("prev"),
63
63
  className: "rounded-ds-full p-ds-02 hover:bg-layer-02",
64
- children: /* @__PURE__ */ r(C, { className: "h-ico-md w-ico-md text-text-secondary" })
64
+ children: /* @__PURE__ */ a(C, { className: "h-ico-md w-ico-md text-text-secondary" })
65
65
  }
66
66
  ),
67
- /* @__PURE__ */ r(
67
+ /* @__PURE__ */ a(
68
68
  "button",
69
69
  {
70
70
  "aria-label": "Next",
71
- onClick: () => c("next"),
71
+ onClick: () => d("next"),
72
72
  className: "rounded-ds-full p-ds-02 hover:bg-layer-02",
73
- children: /* @__PURE__ */ r(k, { className: "h-ico-md w-ico-md text-text-secondary" })
73
+ children: /* @__PURE__ */ a(k, { className: "h-ico-md w-ico-md text-text-secondary" })
74
74
  }
75
75
  )
76
76
  ] })
77
77
  ] })
78
78
  ] }),
79
- /* @__PURE__ */ a(
79
+ /* @__PURE__ */ r(
80
80
  "div",
81
81
  {
82
82
  className: s(
@@ -85,8 +85,8 @@ const F = v.forwardRef(
85
85
  "w-full items-center overflow-hidden"
86
86
  ),
87
87
  children: [
88
- t.activeTimeFrame === "monthly" && ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"].map((e) => /* @__PURE__ */ r("div", { className: "pb-ds-03 pt-ds-05 text-center", children: /* @__PURE__ */ r("span", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: e }) }, e)),
89
- t.days.map((e, l) => /* @__PURE__ */ a(
88
+ t.activeTimeFrame === "monthly" && ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"].map((e) => /* @__PURE__ */ a("div", { className: "pb-ds-03 pt-ds-05 text-center", children: /* @__PURE__ */ a("span", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: e }) }, e)),
89
+ t.days.map((e, l) => /* @__PURE__ */ r(
90
90
  "button",
91
91
  {
92
92
  type: "button",
@@ -100,8 +100,8 @@ const F = v.forwardRef(
100
100
  ),
101
101
  onClick: () => h(l, e.fullDate),
102
102
  children: [
103
- t.activeTimeFrame === "weekly" && /* @__PURE__ */ r("span", { className: "text-ds-sm font-semibold uppercase tracking-wider mb-ds-03 text-text-tertiary", children: e.day }),
104
- /* @__PURE__ */ a(
103
+ t.activeTimeFrame === "weekly" && /* @__PURE__ */ a("span", { className: "text-ds-sm font-semibold uppercase tracking-wider mb-ds-03 text-text-tertiary", children: e.day }),
104
+ /* @__PURE__ */ r(
105
105
  "div",
106
106
  {
107
107
  className: s(
@@ -110,7 +110,7 @@ const F = v.forwardRef(
110
110
  t.activeTimeFrame === "monthly" && N(e.fullDate, new Date(t.selectedDate)) && "rounded-ds-full bg-interactive-subtle ring-2 ring-inset ring-interactive"
111
111
  ),
112
112
  children: [
113
- /* @__PURE__ */ r(
113
+ /* @__PURE__ */ a(
114
114
  "span",
115
115
  {
116
116
  className: s(
@@ -121,7 +121,7 @@ const F = v.forwardRef(
121
121
  children: e.date
122
122
  }
123
123
  ),
124
- i && i(e.fullDate) && /* @__PURE__ */ r("div", { className: "absolute z-raised mt-ds-06 h-ds-02b w-ds-02b translate-y-[5px] rounded-ds-full bg-text-error" })
124
+ i && i(e.fullDate) && /* @__PURE__ */ a("div", { className: "absolute z-raised mt-ds-06 h-ds-02b w-ds-02b translate-y-[5px] rounded-ds-full bg-text-error" })
125
125
  ]
126
126
  }
127
127
  )
@@ -12,8 +12,8 @@ const R = C.forwardRef(
12
12
  selectedMonth: m,
13
13
  yearsList: s,
14
14
  isTodaySelected: u,
15
- selectedAssociate: l,
16
- users: r,
15
+ selectedAssociate: a,
16
+ users: l,
17
17
  userImages: n,
18
18
  activeTimeFrame: w,
19
19
  onMonthSelection: v,
@@ -29,17 +29,17 @@ const R = C.forwardRef(
29
29
  m,
30
30
  /* @__PURE__ */ e(N, {})
31
31
  ] }),
32
- /* @__PURE__ */ e(f, { className: "custom-scrollbar absolute ml-ds-08 max-h-[300px] overflow-y-auto rounded-ds-md border border-0 border-border p-0 shadow-brand", children: s.map((t, a) => /* @__PURE__ */ e(
32
+ /* @__PURE__ */ e(f, { className: "custom-scrollbar absolute ml-ds-08 max-h-[300px] overflow-y-auto rounded-ds-md border border-0 border-border p-0 shadow-brand", children: s.map((t, r) => /* @__PURE__ */ e(
33
33
  o,
34
34
  {
35
35
  onSelect: () => {
36
36
  v(t);
37
37
  },
38
- className: b("p-0", a !== s.length - 1 ? "border-b border-b-border" : ""),
38
+ className: b("p-0", r !== s.length - 1 ? "border-b border-b-border" : ""),
39
39
  children: /* @__PURE__ */ e(
40
40
  "span",
41
41
  {
42
- className: b("w-full py-ds-04 pl-ds-05 pr-ds-06", m === t ? "text-ds-md font-semibold bg-interactive text-text-on-color" : "text-ds-md text-text-secondary hover:bg-layer-02", a === 0 ? "rounded-t-[7px]" : a === s.length - 1 ? "rounded-b-[7px]" : ""),
42
+ className: b("w-full py-ds-04 pl-ds-05 pr-ds-06", m === t ? "text-ds-md font-semibold bg-interactive text-text-on-color" : "text-ds-md text-text-secondary hover:bg-layer-02", r === 0 ? "rounded-t-[7px]" : r === s.length - 1 ? "rounded-b-[7px]" : ""),
43
43
  children: t.split(" ")[1]
44
44
  }
45
45
  )
@@ -57,17 +57,17 @@ const R = C.forwardRef(
57
57
  )
58
58
  ] }),
59
59
  /* @__PURE__ */ d("div", { className: "flex w-full items-center justify-between gap-ds-05 md:mt-0 md:w-auto md:justify-start max-md:mt-[17px] max-lg:gap-[0.5rem]", children: [
60
- /* @__PURE__ */ e("div", { className: "hidden md:flex", children: l ? /* @__PURE__ */ d("div", { className: "text-ds-md flex items-center justify-start rounded-ds-md bg-interactive px-ds-03 py-ds-02b text-text-on-color", children: [
60
+ /* @__PURE__ */ e("div", { className: "hidden md:flex", children: a ? /* @__PURE__ */ d("div", { className: "text-ds-md flex items-center justify-start rounded-ds-md bg-interactive px-ds-03 py-ds-02b text-text-on-color", children: [
61
61
  /* @__PURE__ */ d("div", { className: "flex items-center justify-start gap-0", children: [
62
- n[l.id] ? /* @__PURE__ */ e(
62
+ n[a.id] ? /* @__PURE__ */ e(
63
63
  "img",
64
64
  {
65
- src: n[l.id],
66
- alt: `${l.name}'s avatar`,
65
+ src: n[a.id],
66
+ alt: `${a.name}'s avatar`,
67
67
  className: "h-ico-md w-ico-md rounded-ds-full"
68
68
  }
69
- ) : /* @__PURE__ */ e("div", { className: "flex h-ico-md w-ico-md flex-shrink-0 items-center justify-center rounded-ds-full bg-layer-03", children: /* @__PURE__ */ e("span", { className: "text-interactive", children: l.name.charAt(0) }) }),
70
- /* @__PURE__ */ e("span", { className: "text-ds-md ml-ds-01 mr-ds-02 text-text-on-color", children: l.name })
69
+ ) : /* @__PURE__ */ e("div", { className: "flex h-ico-md w-ico-md flex-shrink-0 items-center justify-center rounded-ds-full bg-layer-03", children: /* @__PURE__ */ e("span", { className: "text-interactive", children: a.name.charAt(0) }) }),
70
+ /* @__PURE__ */ e("span", { className: "text-ds-md ml-ds-01 mr-ds-02 text-text-on-color", children: a.name })
71
71
  ] }),
72
72
  /* @__PURE__ */ e(
73
73
  "button",
@@ -86,15 +86,15 @@ const R = C.forwardRef(
86
86
  ] }),
87
87
  /* @__PURE__ */ e(N, { className: "h-ico-sm w-ico-sm" })
88
88
  ] }),
89
- /* @__PURE__ */ e(f, { className: "custom-scrollbar max-h-[400px] w-64 overflow-y-auto p-ds-03", children: (r == null ? void 0 : r.length) === 0 ? /* @__PURE__ */ e(o, { disabled: !0, children: "No users available" }) : r == null ? void 0 : r.map((t) => /* @__PURE__ */ d(
89
+ /* @__PURE__ */ e(f, { className: "custom-scrollbar max-h-[400px] w-64 overflow-y-auto p-ds-03", children: (l == null ? void 0 : l.length) === 0 ? /* @__PURE__ */ e(o, { disabled: !0, children: "No users available" }) : l == null ? void 0 : l.map((t) => /* @__PURE__ */ d(
90
90
  o,
91
91
  {
92
92
  onSelect: () => {
93
- const a = {
93
+ const r = {
94
94
  ...t,
95
95
  createdAt: new Date(t.createdAt)
96
96
  };
97
- i(a);
97
+ i(r);
98
98
  },
99
99
  className: "flex items-center gap-ds-03 p-ds-03",
100
100
  children: [
@@ -116,7 +116,7 @@ const R = C.forwardRef(
116
116
  k,
117
117
  {
118
118
  size: "md",
119
- color: "tonal",
119
+ variant: "tonal",
120
120
  options: [
121
121
  { id: "weekly", text: "Weekly" },
122
122
  { id: "monthly", text: "Monthly" }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsxs as e, jsx as r } from "react/jsx-runtime";
3
- import * as m from "react";
3
+ import * as n from "react";
4
4
  import { cn as p } from "@devalok/shilp-sutra/ui";
5
5
  import { Badge as h } from "@devalok/shilp-sutra/ui";
6
6
  import { Progress as b } from "@devalok/shilp-sutra/ui";
@@ -8,32 +8,32 @@ const f = {
8
8
  active: "success",
9
9
  completed: "info",
10
10
  paused: "warning"
11
- }, x = m.forwardRef(
11
+ }, x = n.forwardRef(
12
12
  ({
13
13
  className: i,
14
14
  name: c,
15
- description: a,
16
- status: t,
15
+ description: t,
16
+ status: a,
17
17
  taskCount: s = 0,
18
18
  completedTasks: d = 0,
19
- ...n
20
- }, l) => {
19
+ ...l
20
+ }, m) => {
21
21
  const o = s > 0 ? Math.round(d / s * 100) : 0;
22
22
  return /* @__PURE__ */ e(
23
23
  "div",
24
24
  {
25
- ref: l,
25
+ ref: m,
26
26
  className: p(
27
27
  "group cursor-pointer rounded-ds-lg border border-border-subtle bg-layer-01 p-ds-05b shadow-01 transition-shadow duration-moderate-02 hover:shadow-02",
28
28
  i
29
29
  ),
30
- ...n,
30
+ ...l,
31
31
  children: [
32
32
  /* @__PURE__ */ e("div", { className: "mb-ds-04 flex items-start justify-between", children: [
33
33
  /* @__PURE__ */ r("h3", { className: "font-display text-ds-base font-semibold text-text-primary", children: c }),
34
- /* @__PURE__ */ r(h, { variant: f[t], size: "sm", children: t })
34
+ /* @__PURE__ */ r(h, { color: f[a], size: "sm", children: a })
35
35
  ] }),
36
- a && /* @__PURE__ */ r("p", { className: "mb-ds-05 line-clamp-2 text-ds-md text-text-secondary", children: a }),
36
+ t && /* @__PURE__ */ r("p", { className: "mb-ds-05 line-clamp-2 text-ds-md text-text-secondary", children: t }),
37
37
  /* @__PURE__ */ e("div", { className: "space-y-ds-03", children: [
38
38
  /* @__PURE__ */ e("div", { className: "flex items-center justify-between text-ds-sm text-text-helper", children: [
39
39
  /* @__PURE__ */ e("span", { children: [
package/dist/index.d.ts CHANGED
@@ -4,6 +4,6 @@ export { TaskDetailPanel, type TaskDetailPanelProps, type FullTask, TaskProperti
4
4
  export { ChatPanel, type ChatPanelProps, type Agent, ChatInput, type ChatInputProps, MessageList, type ChatMessage, type MessageListProps, ConversationList, type Conversation, type ConversationListProps, StreamingText, type StreamingTextProps, } from './chat';
5
5
  export { AttendanceCTA, type AttendanceCTAProps, DailyBrief, type DailyBriefProps, type BriefData, } from './dashboard';
6
6
  export { AccentProvider, type AccentProviderProps, ClientPortalHeader, type ClientPortalHeaderProps, ProjectCard, type ProjectCardProps, } from './client';
7
- export { SegmentedControl, type SegmentedControlProps, SegmentedControlItem, type SegmentedControlItemProps, segmentedControlItemVariants, type SegmentedControlSize, type SegmentedControlColor, type SegmentedControlOption, } from '../../core/src/ui/segmented-control';
8
- export { AdminDashboard, type AdminDashboardRootProps, type AdminDashboardCalendarProps, type AdminDashboardAttendanceOverviewProps, type AdminDashboardAssociateDetailProps, type AdminDashboardLeaveRequestsProps, type AdminDashboardContentProps, Calendar, type CalendarProps, BreakRequestCard, type BreakRequestProps, LeaveRequests, type LeaveRequestsProps, AdminDashboardSkeleton, RenderDate, type RenderDateProps, type DateAttendanceInfo, DashboardHeader, type DashboardHeaderProps, AttendanceOverview, type AttendanceOverviewProps, AssociateDetail, type AssociateDetailProps, CorrectionList, type CorrectionListProps, BreakAdmin, type BreakAdminProps, BreakAdminHeader, type BreakAdminHeaderProps, Breaks, type BreaksProps, LeaveRequest, type LeaveRequestProps, BreakBalance, type BreakBalanceProps, EditBreak, type EditBreakProps, EditBreakBalance, type EditBreakBalanceProps, DeleteBreak, type DeleteBreakProps, BreakAdminSkeleton, ApprovedAdjustments, type ApprovedAdjustmentsProps, AdjustmentType, renderAdjustmentType, type AdminUser, type AttendanceRecord, type GroupedAttendance, type RealtimeCallbacks, } from './admin';
7
+ export { SegmentedControl, type SegmentedControlProps, SegmentedControlItem, type SegmentedControlItemProps, segmentedControlItemVariants, type SegmentedControlSize, type SegmentedControlVariant, type SegmentedControlOption, } from '../../core/src/ui/segmented-control';
8
+ export { AdminDashboard, type AdminDashboardRootProps, type AdminDashboardCalendarProps, type AdminDashboardAttendanceOverviewProps, type AdminDashboardAssociateDetailProps, type AdminDashboardLeaveRequestsProps, type AdminDashboardContentProps, Calendar, type CalendarProps, BreakRequestCard, type BreakRequestProps, LeaveRequests, type LeaveRequestsProps, AdminDashboardSkeleton, RenderDate, type RenderDateProps, type DateAttendanceInfo, DashboardHeader, type DashboardHeaderProps, AttendanceOverview, type AttendanceOverviewProps, AssociateDetail, type AssociateDetailProps, CorrectionList, type CorrectionListProps, BreakAdmin, type BreakAdminProps, BreakAdminHeader, type BreakAdminHeaderProps, Breaks, type BreaksProps, LeaveRequest, type LeaveRequestProps, BreakBalance, type BreakBalanceProps, EditBreak, type EditBreakProps, EditBreakBalance, type EditBreakBalanceProps, DeleteBreak, type DeleteBreakProps, BreakAdminSkeleton, ApprovedAdjustments, type ApprovedAdjustmentsProps, AdjustmentType, renderAdjustmentType, renderStatus, formatDate, formatDateIST, formatTimeIST, formatDateWithWeekday, formatOptionalDate, getDaySuffix, isSameDay, getWeekDays, getMonthDays, getStartOfDay, getEndOfDay, removeAllEmojis, removeEmojiAtStart, type AdminUser, type AttendanceRecord, type GroupedAttendance, type RealtimeCallbacks, type TaskItem, type AttendanceCorrection, type BreakAdminFilters, type UserRole, type AttendanceStatus, type CorrectionStatus, type BreakRequestStatus, type BreakRequest, type BreakBalanceData, type Adjustment, type DayInfo, } from './admin';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGtE,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,QAAQ,EACR,eAAe,EACf,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,OAAO,GACb,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,SAAS,EACT,KAAK,cAAc,EACnB,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,QAAQ,CAAA;AAGf,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,WAAW,EACX,KAAK,gBAAgB,GACtB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,qCAAqC,EAC1C,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,QAAQ,EACR,KAAK,aAAa,EAClB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,aAAa,EACb,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,eAAe,EACf,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,eAAe,EACf,KAAK,oBAAoB,EACzB,cAAc,EACd,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,MAAM,EACN,KAAK,WAAW,EAChB,YAAY,EACZ,KAAK,iBAAiB,EACtB,YAAY,EACZ,KAAK,iBAAiB,EACtB,SAAS,EACT,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,WAAW,EACX,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,cAAc,EACd,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,94 +1,111 @@
1
1
  "use client";
2
2
  import { BandwidthSkeleton as o, DevsabhaSkeleton as t } from "./page-skeletons.js";
3
3
  import { KanbanBoard as m } from "./board/kanban-board.js";
4
- import { BoardColumn as f } from "./board/board-column.js";
5
- import { TaskCard as x, TaskCardOverlay as d } from "./board/task-card.js";
4
+ import { BoardColumn as p } from "./board/board-column.js";
5
+ import { TaskCard as x, TaskCardOverlay as s } from "./board/task-card.js";
6
6
  import { TaskDetailPanel as i } from "./tasks/task-detail-panel.js";
7
7
  import { TaskProperties as k } from "./tasks/task-properties.js";
8
8
  import { ActivityTab as A } from "./tasks/activity-tab.js";
9
- import { ConversationTab as T } from "./tasks/conversation-tab.js";
10
- import { FilesTab as v } from "./tasks/files-tab.js";
11
- import { ReviewTab as D } from "./tasks/review-tab.js";
12
- import { SubtasksTab as S } from "./tasks/subtasks-tab.js";
13
- import { ChatPanel as P } from "./chat/chat-panel.js";
14
- import { ChatInput as y } from "./chat/chat-input.js";
15
- import { MessageList as R } from "./chat/message-list.js";
16
- import { ConversationList as q } from "./chat/conversation-list.js";
17
- import { StreamingText as H } from "./chat/streaming-text.js";
18
- import { AttendanceCTA as E } from "./dashboard/attendance-cta.js";
19
- import { DailyBrief as F } from "./dashboard/daily-brief.js";
20
- import { AccentProvider as M } from "./client/accent-provider.js";
21
- import { ClientPortalHeader as z } from "./client/client-portal-header.js";
22
- import { ProjectCard as J } from "./client/project-card.js";
23
- import { SegmentedControl as Q, SegmentedControlItem as U, segmentedControlItemVariants as W } from "@devalok/shilp-sutra/ui";
9
+ import { ConversationTab as S } from "./tasks/conversation-tab.js";
10
+ import { FilesTab as B } from "./tasks/files-tab.js";
11
+ import { ReviewTab as b } from "./tasks/review-tab.js";
12
+ import { SubtasksTab as u } from "./tasks/subtasks-tab.js";
13
+ import { ChatPanel as g } from "./chat/chat-panel.js";
14
+ import { ChatInput as j } from "./chat/chat-input.js";
15
+ import { MessageList as E } from "./chat/message-list.js";
16
+ import { ConversationList as L } from "./chat/conversation-list.js";
17
+ import { StreamingText as R } from "./chat/streaming-text.js";
18
+ import { AttendanceCTA as w } from "./dashboard/attendance-cta.js";
19
+ import { DailyBrief as W } from "./dashboard/daily-brief.js";
20
+ import { AccentProvider as F } from "./client/accent-provider.js";
21
+ import { ClientPortalHeader as V } from "./client/client-portal-header.js";
22
+ import { ProjectCard as G } from "./client/project-card.js";
23
+ import { SegmentedControl as N, SegmentedControlItem as Q, segmentedControlItemVariants as U } from "@devalok/shilp-sutra/ui";
24
24
  import { AdjustmentType as Y, renderAdjustmentType as Z } from "./admin/utils/render-adjustment-type.js";
25
- import { AdminDashboard as $ } from "./admin/dashboard/admin-dashboard.js";
26
- import { DashboardSkeleton as re } from "./admin/dashboard/dashboard-skeleton.js";
27
- import { ApprovedAdjustments as te } from "./admin/adjustments/approved-adjustments.js";
28
- import { AssociateDetail as me } from "./admin/dashboard/associate-detail.js";
29
- import { AttendanceOverview as fe } from "./admin/dashboard/attendance-overview.js";
30
- import { BreakAdmin as xe } from "./admin/break/break-admin.js";
31
- import { BreakAdminHeader as se } from "./admin/break/header.js";
32
- import { BreakAdminSkeleton as le } from "./admin/break/break-admin-skeleton.js";
33
- import { BreakBalance as Ce } from "./admin/break/break-balance.js";
34
- import { BreakRequestCard as Be } from "./admin/dashboard/break-request.js";
35
- import { Breaks as be } from "./admin/break/breaks.js";
36
- import { Calendar as ce } from "./admin/dashboard/calendar.js";
37
- import { CorrectionList as ue } from "./admin/dashboard/correction-list.js";
38
- import { DashboardHeader as he } from "./admin/dashboard/dashboard-header.js";
39
- import { DeleteBreak as ge } from "./admin/break/delete-break.js";
40
- import { EditBreak as Le } from "./admin/break/edit-break.js";
41
- import { EditBreakBalance as je } from "./admin/break/edit-break-balance.js";
42
- import { LeaveRequest as we } from "./admin/break/leave-request.js";
43
- import { LeaveRequests as Ie } from "./admin/dashboard/leave-requests.js";
44
- import { RenderDate as Oe } from "./admin/dashboard/render-date.js";
25
+ import { renderStatus as $ } from "./admin/utils/render-status.js";
26
+ import { formatDate as re, formatDateIST as oe, formatDateWithWeekday as te, formatOptionalDate as ae, formatTimeIST as me, getDaySuffix as fe, getEndOfDay as pe, getMonthDays as ne, getStartOfDay as xe, getWeekDays as se, isSameDay as de } from "./admin/utils/date-utils.js";
27
+ import { removeAllEmojis as le, removeEmojiAtStart as ke } from "./admin/utils/emoji-utils.js";
28
+ import { AdminDashboard as Ae } from "./admin/dashboard/admin-dashboard.js";
29
+ import { DashboardSkeleton as Se } from "./admin/dashboard/dashboard-skeleton.js";
30
+ import { ApprovedAdjustments as Be } from "./admin/adjustments/approved-adjustments.js";
31
+ import { AssociateDetail as be } from "./admin/dashboard/associate-detail.js";
32
+ import { AttendanceOverview as ue } from "./admin/dashboard/attendance-overview.js";
33
+ import { BreakAdmin as ge } from "./admin/break/break-admin.js";
34
+ import { BreakAdminHeader as je } from "./admin/break/header.js";
35
+ import { BreakAdminSkeleton as Ee } from "./admin/break/break-admin-skeleton.js";
36
+ import { BreakBalance as Le } from "./admin/break/break-balance.js";
37
+ import { BreakRequestCard as Re } from "./admin/dashboard/break-request.js";
38
+ import { Breaks as we } from "./admin/break/breaks.js";
39
+ import { Calendar as We } from "./admin/dashboard/calendar.js";
40
+ import { CorrectionList as Fe } from "./admin/dashboard/correction-list.js";
41
+ import { DashboardHeader as Ve } from "./admin/dashboard/dashboard-header.js";
42
+ import { DeleteBreak as Ge } from "./admin/break/delete-break.js";
43
+ import { EditBreak as Ne } from "./admin/break/edit-break.js";
44
+ import { EditBreakBalance as Ue } from "./admin/break/edit-break-balance.js";
45
+ import { LeaveRequest as Ye } from "./admin/break/leave-request.js";
46
+ import { LeaveRequests as _e } from "./admin/dashboard/leave-requests.js";
47
+ import { RenderDate as er } from "./admin/dashboard/render-date.js";
45
48
  export {
46
- M as AccentProvider,
49
+ F as AccentProvider,
47
50
  A as ActivityTab,
48
51
  Y as AdjustmentType,
49
- $ as AdminDashboard,
50
- re as AdminDashboardSkeleton,
51
- te as ApprovedAdjustments,
52
- me as AssociateDetail,
53
- E as AttendanceCTA,
54
- fe as AttendanceOverview,
52
+ Ae as AdminDashboard,
53
+ Se as AdminDashboardSkeleton,
54
+ Be as ApprovedAdjustments,
55
+ be as AssociateDetail,
56
+ w as AttendanceCTA,
57
+ ue as AttendanceOverview,
55
58
  o as BandwidthSkeleton,
56
- f as BoardColumn,
57
- xe as BreakAdmin,
58
- se as BreakAdminHeader,
59
- le as BreakAdminSkeleton,
60
- Ce as BreakBalance,
61
- Be as BreakRequestCard,
62
- be as Breaks,
63
- ce as Calendar,
64
- y as ChatInput,
65
- P as ChatPanel,
66
- z as ClientPortalHeader,
67
- q as ConversationList,
68
- T as ConversationTab,
69
- ue as CorrectionList,
70
- F as DailyBrief,
71
- he as DashboardHeader,
72
- ge as DeleteBreak,
59
+ p as BoardColumn,
60
+ ge as BreakAdmin,
61
+ je as BreakAdminHeader,
62
+ Ee as BreakAdminSkeleton,
63
+ Le as BreakBalance,
64
+ Re as BreakRequestCard,
65
+ we as Breaks,
66
+ We as Calendar,
67
+ j as ChatInput,
68
+ g as ChatPanel,
69
+ V as ClientPortalHeader,
70
+ L as ConversationList,
71
+ S as ConversationTab,
72
+ Fe as CorrectionList,
73
+ W as DailyBrief,
74
+ Ve as DashboardHeader,
75
+ Ge as DeleteBreak,
73
76
  t as DevsabhaSkeleton,
74
- Le as EditBreak,
75
- je as EditBreakBalance,
76
- v as FilesTab,
77
+ Ne as EditBreak,
78
+ Ue as EditBreakBalance,
79
+ B as FilesTab,
77
80
  m as KanbanBoard,
78
- we as LeaveRequest,
79
- Ie as LeaveRequests,
80
- R as MessageList,
81
- J as ProjectCard,
82
- Oe as RenderDate,
83
- D as ReviewTab,
84
- Q as SegmentedControl,
85
- U as SegmentedControlItem,
86
- H as StreamingText,
87
- S as SubtasksTab,
81
+ Ye as LeaveRequest,
82
+ _e as LeaveRequests,
83
+ E as MessageList,
84
+ G as ProjectCard,
85
+ er as RenderDate,
86
+ b as ReviewTab,
87
+ N as SegmentedControl,
88
+ Q as SegmentedControlItem,
89
+ R as StreamingText,
90
+ u as SubtasksTab,
88
91
  x as TaskCard,
89
- d as TaskCardOverlay,
92
+ s as TaskCardOverlay,
90
93
  i as TaskDetailPanel,
91
94
  k as TaskProperties,
95
+ re as formatDate,
96
+ oe as formatDateIST,
97
+ te as formatDateWithWeekday,
98
+ ae as formatOptionalDate,
99
+ me as formatTimeIST,
100
+ fe as getDaySuffix,
101
+ pe as getEndOfDay,
102
+ ne as getMonthDays,
103
+ xe as getStartOfDay,
104
+ se as getWeekDays,
105
+ de as isSameDay,
106
+ le as removeAllEmojis,
107
+ ke as removeEmojiAtStart,
92
108
  Z as renderAdjustmentType,
93
- W as segmentedControlItemVariants
109
+ $ as renderStatus,
110
+ U as segmentedControlItemVariants
94
111
  };
@@ -138,7 +138,7 @@ const E = p.forwardRef(
138
138
  m,
139
139
  {
140
140
  ref: n,
141
- icon: l,
141
+ icon: /* @__PURE__ */ r(l, {}),
142
142
  title: "No activity yet",
143
143
  description: "Actions on this task will appear here",
144
144
  compact: !0,
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import { jsxs as a, jsx as t } from "react/jsx-runtime";
2
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
3
3
  import * as m from "react";
4
4
  import { cn as g } from "@devalok/shilp-sutra/ui";
5
5
  import { Avatar as y, AvatarImage as v, AvatarFallback as w } from "@devalok/shilp-sutra/ui";
6
6
  import { EmptyState as T } from "@devalok/shilp-sutra/composed";
7
7
  import { IconMessageCircle as C, IconSend as A } from "@tabler/icons-react";
8
8
  import { getInitials as I } from "@devalok/shilp-sutra/composed";
9
- function E(e) {
10
- const n = new Date(e), u = (/* @__PURE__ */ new Date()).getTime() - n.getTime(), o = Math.floor(u / 6e4), s = Math.floor(o / 60), l = Math.floor(s / 24);
9
+ function E(t) {
10
+ const n = new Date(t), u = (/* @__PURE__ */ new Date()).getTime() - n.getTime(), o = Math.floor(u / 6e4), s = Math.floor(o / 60), l = Math.floor(s / 24);
11
11
  return o < 1 ? "Just now" : o < 60 ? `${o}m ago` : s < 24 ? `${s}h ago` : l < 7 ? `${l}d ago` : n.toLocaleDateString("en-IN", {
12
12
  month: "short",
13
13
  day: "numeric",
@@ -15,16 +15,16 @@ function E(e) {
15
15
  minute: "2-digit"
16
16
  });
17
17
  }
18
- function k(e) {
19
- return e.authorType === "INTERNAL" && e.internalAuthor ? e.internalAuthor : e.authorType === "CLIENT" && e.clientAuthor ? {
20
- id: e.clientAuthor.id,
21
- name: e.clientAuthor.name,
22
- email: e.clientAuthor.email,
18
+ function k(t) {
19
+ return t.authorType === "INTERNAL" && t.internalAuthor ? t.internalAuthor : t.authorType === "CLIENT" && t.clientAuthor ? {
20
+ id: t.clientAuthor.id,
21
+ name: t.clientAuthor.name,
22
+ email: t.clientAuthor.email,
23
23
  image: null
24
- } : { id: e.authorId, name: "Unknown", image: null };
24
+ } : { id: t.authorId, name: "Unknown", image: null };
25
25
  }
26
- function R(e) {
27
- return e.replace(/<[^>]*>/g, "");
26
+ function R(t) {
27
+ return t.replace(/<[^>]*>/g, "");
28
28
  }
29
29
  const L = m.forwardRef(
30
30
  function({
@@ -43,7 +43,7 @@ const L = m.forwardRef(
43
43
  return m.useEffect(() => {
44
44
  c.current && (c.current.scrollTop = c.current.scrollHeight);
45
45
  }, [n.length]), /* @__PURE__ */ a("div", { ref: b, className: g("flex flex-col", o), children: [
46
- n.length > 0 ? /* @__PURE__ */ t(
46
+ n.length > 0 ? /* @__PURE__ */ e(
47
47
  "div",
48
48
  {
49
49
  ref: c,
@@ -52,8 +52,8 @@ const L = m.forwardRef(
52
52
  const i = k(r), f = r.authorType === "CLIENT";
53
53
  return /* @__PURE__ */ a("div", { className: "flex gap-ds-03", children: [
54
54
  /* @__PURE__ */ a(y, { className: "h-ds-xs-plus w-ds-xs-plus shrink-0 mt-ds-01", children: [
55
- i.image && /* @__PURE__ */ t(v, { src: i.image, alt: i.name }),
56
- /* @__PURE__ */ t(
55
+ i.image && /* @__PURE__ */ e(v, { src: i.image, alt: i.name }),
56
+ /* @__PURE__ */ e(
57
57
  w,
58
58
  {
59
59
  className: g(
@@ -67,34 +67,34 @@ const L = m.forwardRef(
67
67
  ] }),
68
68
  /* @__PURE__ */ a("div", { className: "flex-1 min-w-0", children: [
69
69
  /* @__PURE__ */ a("div", { className: "flex items-baseline gap-ds-03", children: [
70
- /* @__PURE__ */ t("span", { className: "text-ds-md font-medium text-text-primary", children: i.name }),
71
- s ? !f && /* @__PURE__ */ t("span", { className: "rounded bg-layer-03 px-ds-02 py-px text-ds-xs font-semibold uppercase tracking-wider text-text-on-color", children: "Team" }) : f && /* @__PURE__ */ t("span", { className: "rounded bg-warning-surface px-ds-02 py-px text-ds-xs font-semibold uppercase tracking-wider text-text-warning", children: "Client" }),
72
- /* @__PURE__ */ t("span", { className: "text-ds-sm text-text-placeholder", children: E(r.createdAt) })
70
+ /* @__PURE__ */ e("span", { className: "text-ds-md font-medium text-text-primary", children: i.name }),
71
+ s ? !f && /* @__PURE__ */ e("span", { className: "rounded bg-layer-03 px-ds-02 py-px text-ds-xs font-semibold uppercase tracking-wider text-text-on-color", children: "Team" }) : f && /* @__PURE__ */ e("span", { className: "rounded bg-warning-surface px-ds-02 py-px text-ds-xs font-semibold uppercase tracking-wider text-text-warning", children: "Client" }),
72
+ /* @__PURE__ */ e("span", { className: "text-ds-sm text-text-placeholder", children: E(r.createdAt) })
73
73
  ] }),
74
- /* @__PURE__ */ t("div", { className: "mt-ds-02", children: h ? h({
74
+ /* @__PURE__ */ e("div", { className: "mt-ds-02", children: h ? h({
75
75
  content: r.content,
76
76
  className: "[&_.ProseMirror]:!min-h-0 [&_.ProseMirror]:!p-0"
77
- }) : /* @__PURE__ */ t("p", { className: "text-ds-md text-text-secondary whitespace-pre-wrap", children: R(r.content) }) })
77
+ }) : /* @__PURE__ */ e("p", { className: "text-ds-md text-text-secondary whitespace-pre-wrap", children: R(r.content) }) })
78
78
  ] })
79
79
  ] }, r.id);
80
80
  })
81
81
  }
82
- ) : /* @__PURE__ */ t(
82
+ ) : /* @__PURE__ */ e(
83
83
  T,
84
84
  {
85
- icon: C,
85
+ icon: /* @__PURE__ */ e(C, {}),
86
86
  title: "No comments yet",
87
87
  description: "Start a conversation about this task",
88
88
  compact: !0
89
89
  }
90
90
  ),
91
91
  /* @__PURE__ */ a("div", { className: "mt-ds-05 space-y-ds-03", children: [
92
- x === "EVERYONE" && !s && /* @__PURE__ */ t("p", { className: "text-ds-xs text-text-warning", children: "This task is visible to clients. Comments may be seen by external users." }),
92
+ x === "EVERYONE" && !s && /* @__PURE__ */ e("p", { className: "text-ds-xs text-text-warning", children: "This task is visible to clients. Comments may be seen by external users." }),
93
93
  l ? l({
94
94
  content: d,
95
95
  onChange: p,
96
96
  placeholder: "Write a comment..."
97
- }) : /* @__PURE__ */ t(
97
+ }) : /* @__PURE__ */ e(
98
98
  "textarea",
99
99
  {
100
100
  value: d,
@@ -104,7 +104,7 @@ const L = m.forwardRef(
104
104
  className: "w-full resize-none rounded-ds-md border border-border bg-transparent px-ds-04 py-ds-03 text-ds-md text-text-primary placeholder:text-text-placeholder outline-none focus:border-border-subtle"
105
105
  }
106
106
  ),
107
- /* @__PURE__ */ t("div", { className: "flex justify-end", children: /* @__PURE__ */ a(
107
+ /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ a(
108
108
  "button",
109
109
  {
110
110
  type: "button",
@@ -112,7 +112,7 @@ const L = m.forwardRef(
112
112
  disabled: !d.replace(/<[^>]*>/g, "").trim(),
113
113
  className: "inline-flex items-center gap-ds-02b rounded-ds-lg bg-interactive px-ds-04 py-ds-02b text-ds-sm font-semibold text-text-on-color transition-colors hover:bg-interactive-hover disabled:opacity-[0.38] disabled:cursor-not-allowed",
114
114
  children: [
115
- /* @__PURE__ */ t(A, { className: "h-ico-sm w-ico-sm", stroke: 2 }),
115
+ /* @__PURE__ */ e(A, { className: "h-ico-sm w-ico-sm", stroke: 2 }),
116
116
  "Comment"
117
117
  ]
118
118
  }
@@ -171,7 +171,7 @@ const G = d.forwardRef(
171
171
  }) }) : /* @__PURE__ */ e("div", { className: "mt-ds-03", children: /* @__PURE__ */ e(
172
172
  R,
173
173
  {
174
- icon: B,
174
+ icon: /* @__PURE__ */ e(B, {}),
175
175
  title: "No files attached",
176
176
  description: "Upload files to share with your team",
177
177
  compact: !0
@@ -136,7 +136,7 @@ const G = [
136
136
  }) }) : /* @__PURE__ */ t(
137
137
  S,
138
138
  {
139
- icon: T,
139
+ icon: /* @__PURE__ */ t(T, {}),
140
140
  title: "No reviews yet",
141
141
  description: "Request a review from a team member",
142
142
  compact: !0
@@ -101,7 +101,7 @@ const C = l.forwardRef(
101
101
  }) }) : !m && /* @__PURE__ */ t(
102
102
  j,
103
103
  {
104
- icon: L,
104
+ icon: /* @__PURE__ */ t(L, {}),
105
105
  title: "No subtasks",
106
106
  description: "Break this task into smaller pieces",
107
107
  compact: !0
@@ -1 +1 @@
1
- {"version":3,"file":"task-detail-panel.d.ts","sourceRoot":"","sources":["../../src/tasks/task-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EAAkB,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAahE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAA;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAA;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IACnC,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAG/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/D,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAEnC,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QACnC,WAAW,EAAE,MAAM,CAAA;KACpB,KAAK,KAAK,CAAC,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IAClF,4CAA4C;IAC5C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1E,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAA;QACrC,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,KAAK,KAAK,CAAC,SAAS,CAAA;IAErB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAkDD,QAAA,MAAM,eAAe,6FA4OnB,CAAA;AAIF,OAAO,EAAE,eAAe,EAAE,CAAA;AAC1B,YAAY,EAAE,oBAAoB,EAAE,CAAA"}
1
+ {"version":3,"file":"task-detail-panel.d.ts","sourceRoot":"","sources":["../../src/tasks/task-detail-panel.tsx"],"names":[],"mappings":"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"}
@@ -1,26 +1,26 @@
1
1
  "use client";
2
- import { jsx as r, jsxs as a, Fragment as ee } from "react/jsx-runtime";
2
+ import { jsx as r, jsxs as a, Fragment as ie } from "react/jsx-runtime";
3
3
  import * as c from "react";
4
- import { cn as L } from "@devalok/shilp-sutra/ui";
5
- import { Sheet as ie, SheetContent as re, SheetTitle as se } from "@devalok/shilp-sutra/ui";
6
- import { VisuallyHidden as le } from "@devalok/shilp-sutra/ui";
4
+ import { cn as _ } from "@devalok/shilp-sutra/ui";
5
+ import { Sheet as re, SheetContent as se, SheetTitle as le } from "@devalok/shilp-sutra/ui";
6
+ import { VisuallyHidden as ae } from "@devalok/shilp-sutra/ui";
7
7
  import { Skeleton as t } from "@devalok/shilp-sutra/ui";
8
- import { Tabs as ae, TabsList as ce, TabsTrigger as te } from "@devalok/shilp-sutra/ui";
9
- import { TaskProperties as de } from "./task-properties.js";
10
- import { SubtasksTab as fe } from "./subtasks-tab.js";
11
- import { ReviewTab as me } from "./review-tab.js";
12
- import { ConversationTab as ne } from "./conversation-tab.js";
13
- import { FilesTab as oe } from "./files-tab.js";
14
- import { ActivityTab as be } from "./activity-tab.js";
15
- import { IconListCheck as pe, IconGitPullRequest as he, IconMessageCircle as ue, IconPaperclip as ve, IconActivity as xe } from "@tabler/icons-react";
8
+ import { Tabs as ce, TabsList as te, TabsTrigger as de } from "@devalok/shilp-sutra/ui";
9
+ import { TaskProperties as fe } from "./task-properties.js";
10
+ import { SubtasksTab as me } from "./subtasks-tab.js";
11
+ import { ReviewTab as ne } from "./review-tab.js";
12
+ import { ConversationTab as oe } from "./conversation-tab.js";
13
+ import { FilesTab as be } from "./files-tab.js";
14
+ import { ActivityTab as pe } from "./activity-tab.js";
15
+ import { IconListCheck as he, IconGitPullRequest as ue, IconMessageCircle as ve, IconPaperclip as xe, IconActivity as ye } from "@tabler/icons-react";
16
16
  const z = [
17
- { id: "subtasks", label: "Subtasks", icon: pe },
18
- { id: "review", label: "Review", icon: he },
19
- { id: "conversation", label: "Conversation", icon: ue },
20
- { id: "files", label: "Files", icon: ve },
21
- { id: "activity", label: "Activity", icon: xe }
17
+ { id: "subtasks", label: "Subtasks", icon: he },
18
+ { id: "review", label: "Review", icon: ue },
19
+ { id: "conversation", label: "Conversation", icon: ve },
20
+ { id: "files", label: "Files", icon: xe },
21
+ { id: "activity", label: "Activity", icon: ye }
22
22
  ];
23
- function ye() {
23
+ function Ne() {
24
24
  return /* @__PURE__ */ a("div", { className: "space-y-ds-06 p-ds-06", children: [
25
25
  /* @__PURE__ */ r(t, { className: "h-ds-xs-plus w-3/4 bg-field" }),
26
26
  /* @__PURE__ */ r("div", { className: "space-y-ds-04", children: Array.from({ length: 6 }).map((V, i) => /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-04", children: [
@@ -35,7 +35,7 @@ function ye() {
35
35
  ] })
36
36
  ] });
37
37
  }
38
- const Ne = c.forwardRef(function({
38
+ const Te = c.forwardRef(function({
39
39
  task: i,
40
40
  loading: G = !1,
41
41
  open: b,
@@ -63,40 +63,41 @@ const Ne = c.forwardRef(function({
63
63
  renderPriorityIndicator: X,
64
64
  renderDatePicker: Y,
65
65
  isUploading: Z = !1
66
- }, Te) {
67
- var _, C, K;
66
+ }, $) {
67
+ var C, K, L;
68
68
  const [d, B] = c.useState(s ? "conversation" : "subtasks"), [E, m] = c.useState(!1), [O, n] = c.useState(""), o = c.useRef(null);
69
69
  c.useEffect(() => {
70
70
  i && (n(i.title), m(!1));
71
71
  }, [i == null ? void 0 : i.id]), c.useEffect(() => {
72
72
  b && B(s ? "conversation" : "subtasks");
73
73
  }, [b, s]);
74
- const $ = (e) => {
74
+ const q = (e) => {
75
75
  B(e), D == null || D(e);
76
76
  }, S = () => {
77
77
  m(!1);
78
78
  const e = O.trim();
79
79
  e && e !== (i == null ? void 0 : i.title) ? p == null || p(e) : i && n(i.title);
80
- }, q = (e) => {
80
+ }, R = (e) => {
81
81
  e.key === "Enter" && (e.preventDefault(), S()), e.key === "Escape" && (m(!1), i && n(i.title));
82
82
  };
83
83
  c.useEffect(() => {
84
84
  E && o.current && (o.current.focus(), o.current.select());
85
85
  }, [E]);
86
- const R = (_ = f.find((e) => e.isTerminal)) == null ? void 0 : _.id, F = ((C = f.find((e) => e.isDefault)) == null ? void 0 : C.id) || ((K = f[0]) == null ? void 0 : K.id) || "", k = s ? z.filter((e) => e.id === "conversation") : z, M = P || (i == null ? void 0 : i.comments) || [];
87
- return /* @__PURE__ */ r(ie, { open: b, onOpenChange: H, children: /* @__PURE__ */ a(
88
- re,
86
+ const F = (C = f.find((e) => e.isTerminal)) == null ? void 0 : C.id, k = ((K = f.find((e) => e.isDefault)) == null ? void 0 : K.id) || ((L = f[0]) == null ? void 0 : L.id) || "", M = s ? z.filter((e) => e.id === "conversation") : z, U = P || (i == null ? void 0 : i.comments) || [];
87
+ return /* @__PURE__ */ r(re, { open: b, onOpenChange: H, children: /* @__PURE__ */ a(
88
+ se,
89
89
  {
90
+ ref: $,
90
91
  side: "right",
91
- className: L(
92
+ className: _(
92
93
  /* intentional: task detail side panel takes 40% of screen, min 380px for form usability */
93
94
  "w-full sm:max-w-none sm:w-[40%] min-w-[380px] p-0",
94
95
  "flex flex-col overflow-hidden",
95
96
  "border-l border-border bg-layer-01"
96
97
  ),
97
98
  children: [
98
- /* @__PURE__ */ r(le, { children: /* @__PURE__ */ r(se, { children: (i == null ? void 0 : i.title) || "Task Details" }) }),
99
- G || !i ? /* @__PURE__ */ r(ye, {}) : /* @__PURE__ */ a(ee, { children: [
99
+ /* @__PURE__ */ r(ae, { children: /* @__PURE__ */ r(le, { children: (i == null ? void 0 : i.title) || "Task Details" }) }),
100
+ G || !i ? /* @__PURE__ */ r(Ne, {}) : /* @__PURE__ */ a(ie, { children: [
100
101
  /* @__PURE__ */ a("div", { className: "shrink-0 border-b border-border px-ds-06 pb-ds-05 pt-ds-06", children: [
101
102
  !s && E ? /* @__PURE__ */ r(
102
103
  "input",
@@ -106,7 +107,7 @@ const Ne = c.forwardRef(function({
106
107
  value: O,
107
108
  onChange: (e) => n(e.target.value),
108
109
  onBlur: S,
109
- onKeyDown: q,
110
+ onKeyDown: R,
110
111
  className: "w-full bg-transparent text-ds-lg font-semibold text-text-primary outline-none"
111
112
  }
112
113
  ) : (
@@ -115,7 +116,7 @@ const Ne = c.forwardRef(function({
115
116
  "h2",
116
117
  {
117
118
  onClick: s ? void 0 : () => m(!0),
118
- className: L(
119
+ className: _(
119
120
  "text-ds-lg font-semibold text-text-primary",
120
121
  !s && "cursor-text hover:text-interactive transition-colors"
121
122
  ),
@@ -127,7 +128,7 @@ const Ne = c.forwardRef(function({
127
128
  ] }),
128
129
  /* @__PURE__ */ a("div", { className: "flex-1 overflow-y-auto", children: [
129
130
  /* @__PURE__ */ r("div", { className: "border-b border-border px-ds-06 py-ds-05", children: /* @__PURE__ */ r(
130
- de,
131
+ fe,
131
132
  {
132
133
  task: i,
133
134
  columns: f,
@@ -143,19 +144,19 @@ const Ne = c.forwardRef(function({
143
144
  renderDatePicker: Y
144
145
  }
145
146
  ) }),
146
- /* @__PURE__ */ r("div", { className: "sticky top-0 z-raised bg-layer-01 px-ds-06", children: /* @__PURE__ */ r(ae, { value: d, onValueChange: $, children: /* @__PURE__ */ r(ce, { variant: "line", children: k.map((e) => /* @__PURE__ */ a(te, { value: e.id, children: [
147
+ /* @__PURE__ */ r("div", { className: "sticky top-0 z-raised bg-layer-01 px-ds-06", children: /* @__PURE__ */ r(ce, { value: d, onValueChange: q, children: /* @__PURE__ */ r(te, { variant: "line", children: M.map((e) => /* @__PURE__ */ a(de, { value: e.id, children: [
147
148
  /* @__PURE__ */ r(e.icon, { className: "h-ico-sm w-ico-sm", stroke: 1.5 }),
148
149
  e.label
149
150
  ] }, e.id)) }) }) }),
150
151
  /* @__PURE__ */ a("div", { className: "px-ds-06 py-ds-05", children: [
151
152
  d === "subtasks" && /* @__PURE__ */ r(
152
- fe,
153
+ me,
153
154
  {
154
155
  subtasks: i.subtasks ?? [],
155
- terminalColumnId: R,
156
+ terminalColumnId: F,
156
157
  projectId: i.projectId,
157
158
  parentTaskId: i.id,
158
- defaultColumnId: F,
159
+ defaultColumnId: k,
159
160
  onCreateSubtask: s ? () => {
160
161
  } : (e) => x == null ? void 0 : x(e),
161
162
  onToggleSubtask: s ? () => {
@@ -164,18 +165,18 @@ const Ne = c.forwardRef(function({
164
165
  }
165
166
  ),
166
167
  d === "review" && !s && /* @__PURE__ */ r(
167
- me,
168
+ ne,
168
169
  {
169
170
  reviews: i.reviewRequests,
170
171
  members: j,
171
172
  onRequestReview: (e) => N == null ? void 0 : N(e),
172
- onUpdateStatus: (e, l, U) => T == null ? void 0 : T(e, l, U)
173
+ onUpdateStatus: (e, l, ee) => T == null ? void 0 : T(e, l, ee)
173
174
  }
174
175
  ),
175
176
  d === "conversation" && /* @__PURE__ */ r(
176
- ne,
177
+ oe,
177
178
  {
178
- comments: M,
179
+ comments: U,
179
180
  taskVisibility: i.visibility,
180
181
  onPostComment: (e, l) => w == null ? void 0 : w(e, l),
181
182
  clientMode: s,
@@ -184,7 +185,7 @@ const Ne = c.forwardRef(function({
184
185
  }
185
186
  ),
186
187
  d === "files" && /* @__PURE__ */ r(
187
- oe,
188
+ be,
188
189
  {
189
190
  files: i.files ?? [],
190
191
  onUpload: s ? () => {
@@ -195,7 +196,7 @@ const Ne = c.forwardRef(function({
195
196
  readOnly: s
196
197
  }
197
198
  ),
198
- d === "activity" && /* @__PURE__ */ r(be, { activities: J })
199
+ d === "activity" && /* @__PURE__ */ r(pe, { activities: J })
199
200
  ] })
200
201
  ] })
201
202
  ] })
@@ -203,7 +204,7 @@ const Ne = c.forwardRef(function({
203
204
  }
204
205
  ) });
205
206
  });
206
- Ne.displayName = "TaskDetailPanel";
207
+ Te.displayName = "TaskDetailPanel";
207
208
  export {
208
- Ne as TaskDetailPanel
209
+ Te as TaskDetailPanel
209
210
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra-karm",
3
- "version": "0.3.1",
3
+ "version": "0.6.0",
4
4
  "description": "Domain components for Karm — board, tasks, chat, dashboard, client, and admin",
5
5
  "license": "MIT",
6
6
  "type": "module",