@devalok/shilp-sutra-karm 0.18.1 → 0.20.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.
Files changed (185) hide show
  1. package/dist/_chunks/render-adjustment-type.js +50 -48
  2. package/dist/_chunks/sidebar-scratchpad.js +714 -326
  3. package/dist/_chunks/task-detail-panel.js +1638 -1175
  4. package/dist/_chunks/vendor.js +1154 -1123
  5. package/dist/dashboard/index.d.ts +20 -0
  6. package/dist/dashboard/index.d.ts.map +1 -1
  7. package/dist/dashboard/index.js +451 -5
  8. package/dist/dashboard/project-health-card.d.ts +22 -0
  9. package/dist/dashboard/project-health-card.d.ts.map +1 -0
  10. package/dist/dashboard/scratchpad/index.d.ts +13 -0
  11. package/dist/dashboard/scratchpad/index.d.ts.map +1 -0
  12. package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts +11 -0
  13. package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts.map +1 -0
  14. package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts +15 -0
  15. package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts.map +1 -0
  16. package/dist/dashboard/scratchpad/scratchpad-context.d.ts +44 -0
  17. package/dist/dashboard/scratchpad/scratchpad-context.d.ts.map +1 -0
  18. package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts +13 -0
  19. package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts.map +1 -0
  20. package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts +7 -0
  21. package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts.map +1 -0
  22. package/dist/dashboard/scratchpad/scratchpad-header.d.ts +9 -0
  23. package/dist/dashboard/scratchpad/scratchpad-header.d.ts.map +1 -0
  24. package/dist/dashboard/scratchpad/scratchpad-item.d.ts +13 -0
  25. package/dist/dashboard/scratchpad/scratchpad-item.d.ts.map +1 -0
  26. package/dist/dashboard/scratchpad/scratchpad-list.d.ts +9 -0
  27. package/dist/dashboard/scratchpad/scratchpad-list.d.ts.map +1 -0
  28. package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts +11 -0
  29. package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts.map +1 -0
  30. package/dist/dashboard/scratchpad/scratchpad-root.d.ts +8 -0
  31. package/dist/dashboard/scratchpad/scratchpad-root.d.ts.map +1 -0
  32. package/dist/dashboard/scratchpad/scratchpad.d.ts +29 -0
  33. package/dist/dashboard/scratchpad/scratchpad.d.ts.map +1 -0
  34. package/dist/dashboard/scratchpad-widget.d.ts +5 -5
  35. package/dist/dashboard/scratchpad-widget.d.ts.map +1 -1
  36. package/dist/dashboard/sidebar-scratchpad.d.ts +8 -1
  37. package/dist/dashboard/sidebar-scratchpad.d.ts.map +1 -1
  38. package/dist/dashboard/week-heatmap/index.d.ts +10 -0
  39. package/dist/dashboard/week-heatmap/index.d.ts.map +1 -0
  40. package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts +31 -0
  41. package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts.map +1 -0
  42. package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts +7 -0
  43. package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts.map +1 -0
  44. package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts +15 -0
  45. package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts.map +1 -0
  46. package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts +7 -0
  47. package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts.map +1 -0
  48. package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts +8 -0
  49. package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts.map +1 -0
  50. package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts +7 -0
  51. package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts.map +1 -0
  52. package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts +7 -0
  53. package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts.map +1 -0
  54. package/dist/dashboard/week-heatmap/week-heatmap.d.ts +33 -0
  55. package/dist/dashboard/week-heatmap/week-heatmap.d.ts.map +1 -0
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +57 -56
  59. package/dist/tasks/activity-tab.d.ts +2 -11
  60. package/dist/tasks/activity-tab.d.ts.map +1 -1
  61. package/dist/tasks/conversation-tab.d.ts +2 -21
  62. package/dist/tasks/conversation-tab.d.ts.map +1 -1
  63. package/dist/tasks/files-tab.d.ts +2 -18
  64. package/dist/tasks/files-tab.d.ts.map +1 -1
  65. package/dist/tasks/index.d.ts +13 -6
  66. package/dist/tasks/index.d.ts.map +1 -1
  67. package/dist/tasks/index.js +766 -8
  68. package/dist/tasks/pickers/index.d.ts +16 -0
  69. package/dist/tasks/pickers/index.d.ts.map +1 -0
  70. package/dist/tasks/pickers/task-assignee-picker.d.ts +14 -0
  71. package/dist/tasks/pickers/task-assignee-picker.d.ts.map +1 -0
  72. package/dist/tasks/pickers/task-column-picker.d.ts +13 -0
  73. package/dist/tasks/pickers/task-column-picker.d.ts.map +1 -0
  74. package/dist/tasks/pickers/task-date-picker.d.ts +12 -0
  75. package/dist/tasks/pickers/task-date-picker.d.ts.map +1 -0
  76. package/dist/tasks/pickers/task-label-editor.d.ts +13 -0
  77. package/dist/tasks/pickers/task-label-editor.d.ts.map +1 -0
  78. package/dist/tasks/pickers/task-member-picker.d.ts +14 -0
  79. package/dist/tasks/pickers/task-member-picker.d.ts.map +1 -0
  80. package/dist/tasks/pickers/task-priority-picker.d.ts +12 -0
  81. package/dist/tasks/pickers/task-priority-picker.d.ts.map +1 -0
  82. package/dist/tasks/pickers/task-visibility-picker.d.ts +13 -0
  83. package/dist/tasks/pickers/task-visibility-picker.d.ts.map +1 -0
  84. package/dist/tasks/review-tab.d.ts +4 -20
  85. package/dist/tasks/review-tab.d.ts.map +1 -1
  86. package/dist/tasks/subtasks-tab.d.ts +2 -18
  87. package/dist/tasks/subtasks-tab.d.ts.map +1 -1
  88. package/dist/tasks/tabs/activity-entry.d.ts +9 -0
  89. package/dist/tasks/tabs/activity-entry.d.ts.map +1 -0
  90. package/dist/tasks/tabs/activity-timeline.d.ts +8 -0
  91. package/dist/tasks/tabs/activity-timeline.d.ts.map +1 -0
  92. package/dist/tasks/tabs/file-drop-zone.d.ts +10 -0
  93. package/dist/tasks/tabs/file-drop-zone.d.ts.map +1 -0
  94. package/dist/tasks/tabs/file-item.d.ts +11 -0
  95. package/dist/tasks/tabs/file-item.d.ts.map +1 -0
  96. package/dist/tasks/tabs/file-list.d.ts +8 -0
  97. package/dist/tasks/tabs/file-list.d.ts.map +1 -0
  98. package/dist/tasks/tabs/index.d.ts +34 -0
  99. package/dist/tasks/tabs/index.d.ts.map +1 -0
  100. package/dist/tasks/tabs/message-bubble.d.ts +14 -0
  101. package/dist/tasks/tabs/message-bubble.d.ts.map +1 -0
  102. package/dist/tasks/tabs/message-input.d.ts +16 -0
  103. package/dist/tasks/tabs/message-input.d.ts.map +1 -0
  104. package/dist/tasks/tabs/message-list.d.ts +9 -0
  105. package/dist/tasks/tabs/message-list.d.ts.map +1 -0
  106. package/dist/tasks/tabs/review-card.d.ts +10 -0
  107. package/dist/tasks/tabs/review-card.d.ts.map +1 -0
  108. package/dist/tasks/tabs/review-request-button.d.ts +10 -0
  109. package/dist/tasks/tabs/review-request-button.d.ts.map +1 -0
  110. package/dist/tasks/tabs/review-response-form.d.ts +11 -0
  111. package/dist/tasks/tabs/review-response-form.d.ts.map +1 -0
  112. package/dist/tasks/tabs/subtask-add-form.d.ts +9 -0
  113. package/dist/tasks/tabs/subtask-add-form.d.ts.map +1 -0
  114. package/dist/tasks/tabs/subtask-item.d.ts +12 -0
  115. package/dist/tasks/tabs/subtask-item.d.ts.map +1 -0
  116. package/dist/tasks/tabs/subtask-list.d.ts +8 -0
  117. package/dist/tasks/tabs/subtask-list.d.ts.map +1 -0
  118. package/dist/tasks/tabs/subtask-progress.d.ts +9 -0
  119. package/dist/tasks/tabs/subtask-progress.d.ts.map +1 -0
  120. package/dist/tasks/tabs/visibility-warning.d.ts +7 -0
  121. package/dist/tasks/tabs/visibility-warning.d.ts.map +1 -0
  122. package/dist/tasks/task-action-row/index.d.ts +3 -0
  123. package/dist/tasks/task-action-row/index.d.ts.map +1 -0
  124. package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts +8 -0
  125. package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts.map +1 -0
  126. package/dist/tasks/task-action-row/task-action-row-context.d.ts +21 -0
  127. package/dist/tasks/task-action-row/task-action-row-context.d.ts.map +1 -0
  128. package/dist/tasks/task-action-row/task-action-row-due-date.d.ts +5 -0
  129. package/dist/tasks/task-action-row/task-action-row-due-date.d.ts.map +1 -0
  130. package/dist/tasks/task-action-row/task-action-row-labels.d.ts +8 -0
  131. package/dist/tasks/task-action-row/task-action-row-labels.d.ts.map +1 -0
  132. package/dist/tasks/task-action-row/task-action-row-navigate.d.ts +9 -0
  133. package/dist/tasks/task-action-row/task-action-row-navigate.d.ts.map +1 -0
  134. package/dist/tasks/task-action-row/task-action-row-priority.d.ts +5 -0
  135. package/dist/tasks/task-action-row/task-action-row-priority.d.ts.map +1 -0
  136. package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts +8 -0
  137. package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts.map +1 -0
  138. package/dist/tasks/task-action-row/task-action-row-root.d.ts +14 -0
  139. package/dist/tasks/task-action-row/task-action-row-root.d.ts.map +1 -0
  140. package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts +5 -0
  141. package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts.map +1 -0
  142. package/dist/tasks/task-action-row/task-action-row-title.d.ts +9 -0
  143. package/dist/tasks/task-action-row/task-action-row-title.d.ts.map +1 -0
  144. package/dist/tasks/task-action-row/task-action-row.d.ts +48 -0
  145. package/dist/tasks/task-action-row/task-action-row.d.ts.map +1 -0
  146. package/dist/tasks/task-detail-panel.d.ts.map +1 -1
  147. package/dist/tasks/task-panel.d.ts +104 -0
  148. package/dist/tasks/task-panel.d.ts.map +1 -0
  149. package/dist/tasks/task-properties.d.ts +2 -12
  150. package/dist/tasks/task-properties.d.ts.map +1 -1
  151. package/dist/tasks/task-types.d.ts +104 -0
  152. package/dist/tasks/task-types.d.ts.map +1 -0
  153. package/docs/components/admin/admin-dashboard.md +6 -6
  154. package/docs/components/admin/admin-utils.md +2 -2
  155. package/docs/components/admin/break-admin.md +14 -14
  156. package/docs/components/board/board-provider.md +16 -0
  157. package/docs/components/board/column-empty.md +1 -1
  158. package/docs/components/board/task-card.md +4 -0
  159. package/docs/components/chat/streaming-text.md +1 -1
  160. package/docs/components/client/client-portal-header.md +2 -2
  161. package/docs/components/dashboard/attendance-cta.md +3 -3
  162. package/docs/components/dashboard/daily-brief.md +1 -1
  163. package/docs/components/dashboard/project-health-card.md +90 -0
  164. package/docs/components/dashboard/scratchpad-widget.md +17 -0
  165. package/docs/components/dashboard/scratchpad.md +151 -0
  166. package/docs/components/dashboard/sidebar-scratchpad.md +29 -5
  167. package/docs/components/dashboard/week-heatmap.md +95 -0
  168. package/docs/components/tasks/activity-tab.md +4 -0
  169. package/docs/components/tasks/conversation-tab.md +4 -0
  170. package/docs/components/tasks/files-tab.md +4 -0
  171. package/docs/components/tasks/review-tab.md +5 -1
  172. package/docs/components/tasks/subtasks-tab.md +5 -0
  173. package/docs/components/tasks/task-action-row.md +159 -0
  174. package/docs/components/tasks/task-assignee-picker.md +36 -0
  175. package/docs/components/tasks/task-column-picker.md +37 -0
  176. package/docs/components/tasks/task-date-picker.md +49 -0
  177. package/docs/components/tasks/task-detail-panel.md +256 -84
  178. package/docs/components/tasks/task-label-editor.md +42 -0
  179. package/docs/components/tasks/task-member-picker.md +35 -0
  180. package/docs/components/tasks/task-panel.md +89 -0
  181. package/docs/components/tasks/task-priority-picker.md +37 -0
  182. package/docs/components/tasks/task-properties.md +5 -0
  183. package/docs/components/tasks/task-visibility-picker.md +38 -0
  184. package/llms.txt +40 -13
  185. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ # TaskPriorityPicker
2
+
3
+ - Import: @devalok/shilp-sutra-karm/tasks
4
+ - Server-safe: No
5
+ - Category: tasks
6
+
7
+ Popover-based picker for task priority. Each priority level has a distinct icon and color.
8
+
9
+ ## Props
10
+ value: Priority (REQUIRED — 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT')
11
+ onChange: (priority: Priority) => void (REQUIRED)
12
+ readOnly?: boolean (default: false — renders as non-interactive indicator)
13
+ className?: string
14
+
15
+ ## Priority Icons
16
+ URGENT: IconAlertTriangleFilled (text-error-9)
17
+ HIGH: IconArrowUp (text-warning-9)
18
+ MEDIUM: IconMinus (text-surface-fg-muted)
19
+ LOW: IconArrowDown (text-surface-fg-subtle)
20
+
21
+ ## Example
22
+ ```jsx
23
+ <TaskPriorityPicker
24
+ value={task.priority}
25
+ onChange={(priority) => updateTask({ priority })}
26
+ />
27
+ ```
28
+
29
+ ## Gotchas
30
+ - Icon-per-level design: each priority has a unique icon and semantic color, not just a label.
31
+ - Priority labels are sourced from the shared `PRIORITY_LABELS` constant in `task-constants`.
32
+ - The selected priority row has a highlighted background and check icon.
33
+ - Forwards ref to the trigger button.
34
+
35
+ ## Changes
36
+ ### v0.19.0
37
+ - **Added** Initial release
@@ -72,8 +72,13 @@
72
72
  - onUpdate field values: 'columnId', 'ownerId', 'priority', 'dueDate', 'labels', 'visibility'.
73
73
  - Uses MemberPicker from core composed library for owner/assignee selection.
74
74
  - onConfirmVisibilityChange is a guard hook: when provided and user switches to EVERYONE, it is called instead of onUpdate, allowing a confirmation dialog.
75
+ - Priority and Due Date rows are always rendered as interactive popovers regardless of readOnly. Enforcement of readOnly for these fields is done at the callback level. If using TaskProperties standalone in readOnly mode, supply a no-op onUpdate to prevent unintended changes.
75
76
  - Forwards ref to outer div.
76
77
 
77
78
  ## Changes
79
+ ### v0.19.0
80
+ - **Added** Property logic extracted into 7 standalone pickers: `TaskColumnPicker`, `TaskPriorityPicker`, `TaskMemberPicker`, `TaskAssigneePicker`, `TaskDatePicker`, `TaskLabelEditor`, `TaskVisibilityPicker`
81
+ - TaskProperties remains as a pre-assembled default; use individual pickers with `TaskPanel.Property` for custom layouts
82
+
78
83
  ### v0.18.0
79
84
  - **Added** Initial release
@@ -0,0 +1,38 @@
1
+ # TaskVisibilityPicker
2
+
3
+ - Import: @devalok/shilp-sutra-karm/tasks
4
+ - Server-safe: No
5
+ - Category: tasks
6
+
7
+ Popover-based picker for task visibility with an optional confirmation dialog when switching to public ("Everyone") visibility.
8
+
9
+ ## Props
10
+ value: Visibility (REQUIRED — 'INTERNAL' | 'EVERYONE')
11
+ onChange: (visibility: Visibility) => void (REQUIRED)
12
+ confirmOnPublic?: boolean (default: false — when true, shows a confirmation dialog before switching to EVERYONE)
13
+ readOnly?: boolean (default: false — renders as non-interactive display)
14
+ className?: string
15
+
16
+ ## Visibility Options
17
+ INTERNAL: IconLock — "Internal" — "Only team members"
18
+ EVERYONE: IconWorld — "Everyone" — "Visible to clients"
19
+
20
+ ## Example
21
+ ```jsx
22
+ <TaskVisibilityPicker
23
+ value={task.visibility}
24
+ onChange={(visibility) => updateTask({ visibility })}
25
+ confirmOnPublic
26
+ />
27
+ ```
28
+
29
+ ## Gotchas
30
+ - When `confirmOnPublic` is true and the user selects "Everyone", a confirmation Dialog appears warning that the task will become visible to clients. The change only applies after the user clicks "Confirm".
31
+ - Switching to "Internal" never requires confirmation.
32
+ - Selecting the already-active option closes the popover without calling onChange.
33
+ - Each option row shows an icon, label, and description. The selected option has a highlighted background and check icon.
34
+ - Forwards ref to the trigger button.
35
+
36
+ ## Changes
37
+ ### v0.19.0
38
+ - **Added** Initial release
package/llms.txt CHANGED
@@ -10,14 +10,14 @@ pnpm add @devalok/shilp-sutra-karm
10
10
 
11
11
  // Per-module imports (recommended):
12
12
  import { KanbanBoard } from '@devalok/shilp-sutra-karm/board'
13
- import { TaskDetailPanel } from '@devalok/shilp-sutra-karm/tasks'
13
+ import { TaskPanel, TaskColumnPicker, SubtasksTab } from '@devalok/shilp-sutra-karm/tasks'
14
14
  import { ChatPanel } from '@devalok/shilp-sutra-karm/chat'
15
15
  import { AttendanceCTA, DailyBrief } from '@devalok/shilp-sutra-karm/dashboard'
16
16
  import { AccentProvider, ClientPortalHeader, ProjectCard } from '@devalok/shilp-sutra-karm/client'
17
17
  import { AdminDashboard, BreakAdmin } from '@devalok/shilp-sutra-karm/admin'
18
18
 
19
19
  // Or from root barrel:
20
- import { KanbanBoard, TaskDetailPanel, ChatPanel } from '@devalok/shilp-sutra-karm'
20
+ import { KanbanBoard, TaskPanel, ChatPanel } from '@devalok/shilp-sutra-karm'
21
21
 
22
22
  ## Module Reference
23
23
 
@@ -50,17 +50,42 @@ and state updates. Example wiring a custom column header action:
50
50
  />
51
51
 
52
52
  ### Tasks (`/tasks`)
53
+
54
+ **TaskPanel (v2 composition API — recommended)**
55
+ Headless compound component. Shell subcomponents:
56
+ - TaskPanel (root): children, className — flex column container
57
+ - TaskPanel.Header: children, className — top section with border
58
+ - TaskPanel.Title: value, editable?, onUpdate?, subtask?, className — inline-editable heading
59
+ - TaskPanel.Properties: children, className — property rows container
60
+ - TaskPanel.Property: icon, label, children, className — single property row (120px label + flex value)
61
+ - TaskPanel.Tabs: defaultTab, onTabChange?, children — tab system (children must be TaskPanel.Tab)
62
+ - TaskPanel.Tab: id, label, icon?, children — declarative tab definition
63
+ - TaskPanel.Loading: className — skeleton placeholder
64
+
65
+ **Pickers (7)** — all support readOnly?, className?, forwardRef
66
+ - TaskColumnPicker: columns[], value(string), onChange(id)
67
+ - TaskPriorityPicker: value(Priority), onChange(priority)
68
+ - TaskMemberPicker: members[], value(string|null), onChange(id|null), placeholder?
69
+ - TaskAssigneePicker: members[], value(Member[]), onAssign(id), onUnassign(id)
70
+ - TaskDatePicker: value(Date|string|null), onChange(date|null), presets?(default:true)
71
+ - TaskLabelEditor: value(string[]), onChange(labels), availableLabels?(LabelOption[])
72
+ - TaskVisibilityPicker: value(Visibility), onChange(v), confirmOnPublic?
73
+
74
+ **Tab Pieces (16)** — for custom tab layouts
75
+ Subtasks: SubtaskProgress(completed,total), SubtaskList(children), SubtaskItem(subtask,isComplete,onToggle?,onClick?), SubtaskAddForm(onCreate)
76
+ Conversation: MessageList(children,autoScroll?), MessageBubble(comment,clientMode?,renderViewer?), MessageInput(onSubmit,renderEditor?,clientMode?), VisibilityWarning
77
+ Files: FileDropZone(onUpload,isUploading?,accept?), FileList(children), FileItem(file,onDelete?,readOnly?)
78
+ Review: ReviewCard(review,onUpdateStatus?), ReviewResponseForm(reviewId,onSubmit), ReviewRequestButton(members,onRequest)
79
+ Activity: ActivityTimeline(children), ActivityEntry(entry)
80
+
81
+ **Pre-assembled tabs** (unchanged from v0.18.0, usable inside TaskPanel.Tab):
82
+ - SubtasksTab, ConversationTab, FilesTab, ReviewTab, ActivityTab
83
+
84
+ **TaskDetailPanel (deprecated)** — monolithic v0.18.0 component, still exported. Migrate to TaskPanel.
53
85
  - TaskDetailPanel: task(FullTask|null), open, onOpenChange, columns[], members[], activities[], clientMode?, onTitleUpdate, onPropertyUpdate, onAssign, onUnassign, onCreateSubtask, onToggleSubtask, onRequestReview, onUpdateReviewStatus + more callbacks
54
86
  - TaskProperties: task, columns[], members[], onUpdate, onAssign, onUnassign, readOnly?, editableFields?, renderPriorityIndicator?, renderDatePicker?
55
- - ActivityTab: activities(AuditLogEntry[])
56
- - ConversationTab: comments[], taskVisibility, onPostComment, clientMode?, renderEditor?, renderViewer?
57
- - FilesTab: files[], onUpload, onDelete, isUploading?, readOnly?
58
- - ReviewTab: reviews[], members[], onRequestReview, onUpdateStatus
59
- - SubtasksTab: subtasks[], onCreateSubtask, onToggleSubtask, onClickSubtask?, readOnly?
60
-
61
- Type: ExtraTab = { id: string, label: string, icon?: ReactNode, content: ReactNode, position?: 'before' | 'after' }
62
- TaskDetailPanel opens as a Sheet with tabs: Properties, Subtasks, Review, Conversation, Files, Activity. Supports extraTabs?: ExtraTab[] for custom tabs.
63
- Supports clientMode for read-only client portal views.
87
+
88
+ Shared types: Priority, Visibility, CommentAuthorType, LabelOption, Member, Column, Subtask, ReviewRequest, Comment, TaskFile, AuditLogEntry
64
89
  Priority values: 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT'
65
90
  Visibility: 'INTERNAL' | 'EVERYONE'
66
91
 
@@ -128,7 +153,7 @@ BreakRequestStatus: 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED'
128
153
 
129
154
  - All components are callback-driven (emit updates via on* props, no internal state management)
130
155
  - Admin components use compound pattern with React Context (AdminDashboard.Root provides context to children)
131
- - Client mode: TaskDetailPanel, TaskProperties, FilesTab support readOnly + editableFields for client portal
156
+ - Client mode: All pickers support readOnly. TaskDetailPanel (deprecated), TaskProperties, FilesTab support readOnly + editableFields for client portal. With TaskPanel v2, control client mode by choosing which pickers/tabs to render.
132
157
  - Chat supports streaming: pass isStreaming + streamingText for live AI responses
133
158
  - Board uses dnd-kit: KanbanBoard handles all drag state, emits onTaskMove with final position
134
159
  - All dates default to IST (Asia/Kolkata) timezone in admin utilities
@@ -136,7 +161,9 @@ BreakRequestStatus: 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED'
136
161
  ## Common Mistakes -- DO NOT
137
162
 
138
163
  - DO NOT manage DnD state outside KanbanBoard — it handles sensors, collision detection, and sorting internally
139
- - DO NOT forget to pass both open AND onOpenChange to TaskDetailPanel (it's a controlled Sheet)
164
+ - DO NOT use TaskDetailPanel for new code use TaskPanel composition API instead
165
+ - DO NOT forget to pass both open AND onOpenChange to TaskDetailPanel if still using the deprecated API (it's a controlled Sheet)
166
+ - DO NOT use TaskPanel.Tab outside TaskPanel.Tabs — Tabs extracts props from Tab children
140
167
  - DO NOT use AdminDashboard sub-components outside AdminDashboard.Root — they depend on context
141
168
  - DO NOT use BreakAdmin sub-components outside BreakAdmin.Root — same compound pattern
142
169
  - DO NOT pass raw Date objects for task dates — use ISO strings (the components parse them internally)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra-karm",
3
- "version": "0.18.1",
3
+ "version": "0.20.0",
4
4
  "description": "Domain components for Karm — board, tasks, chat, dashboard, client, and admin",
5
5
  "license": "MIT",
6
6
  "type": "module",