@devalok/shilp-sutra-karm 0.18.1 → 0.19.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 (97) hide show
  1. package/dist/_chunks/task-detail-panel.js +1339 -1144
  2. package/dist/tasks/activity-tab.d.ts +2 -11
  3. package/dist/tasks/activity-tab.d.ts.map +1 -1
  4. package/dist/tasks/conversation-tab.d.ts +2 -21
  5. package/dist/tasks/conversation-tab.d.ts.map +1 -1
  6. package/dist/tasks/files-tab.d.ts +2 -18
  7. package/dist/tasks/files-tab.d.ts.map +1 -1
  8. package/dist/tasks/index.d.ts +12 -6
  9. package/dist/tasks/index.d.ts.map +1 -1
  10. package/dist/tasks/index.js +765 -8
  11. package/dist/tasks/pickers/index.d.ts +16 -0
  12. package/dist/tasks/pickers/index.d.ts.map +1 -0
  13. package/dist/tasks/pickers/task-assignee-picker.d.ts +14 -0
  14. package/dist/tasks/pickers/task-assignee-picker.d.ts.map +1 -0
  15. package/dist/tasks/pickers/task-column-picker.d.ts +13 -0
  16. package/dist/tasks/pickers/task-column-picker.d.ts.map +1 -0
  17. package/dist/tasks/pickers/task-date-picker.d.ts +12 -0
  18. package/dist/tasks/pickers/task-date-picker.d.ts.map +1 -0
  19. package/dist/tasks/pickers/task-label-editor.d.ts +13 -0
  20. package/dist/tasks/pickers/task-label-editor.d.ts.map +1 -0
  21. package/dist/tasks/pickers/task-member-picker.d.ts +14 -0
  22. package/dist/tasks/pickers/task-member-picker.d.ts.map +1 -0
  23. package/dist/tasks/pickers/task-priority-picker.d.ts +12 -0
  24. package/dist/tasks/pickers/task-priority-picker.d.ts.map +1 -0
  25. package/dist/tasks/pickers/task-visibility-picker.d.ts +13 -0
  26. package/dist/tasks/pickers/task-visibility-picker.d.ts.map +1 -0
  27. package/dist/tasks/review-tab.d.ts +4 -20
  28. package/dist/tasks/review-tab.d.ts.map +1 -1
  29. package/dist/tasks/subtasks-tab.d.ts +2 -18
  30. package/dist/tasks/subtasks-tab.d.ts.map +1 -1
  31. package/dist/tasks/tabs/activity-entry.d.ts +9 -0
  32. package/dist/tasks/tabs/activity-entry.d.ts.map +1 -0
  33. package/dist/tasks/tabs/activity-timeline.d.ts +8 -0
  34. package/dist/tasks/tabs/activity-timeline.d.ts.map +1 -0
  35. package/dist/tasks/tabs/file-drop-zone.d.ts +10 -0
  36. package/dist/tasks/tabs/file-drop-zone.d.ts.map +1 -0
  37. package/dist/tasks/tabs/file-item.d.ts +11 -0
  38. package/dist/tasks/tabs/file-item.d.ts.map +1 -0
  39. package/dist/tasks/tabs/file-list.d.ts +8 -0
  40. package/dist/tasks/tabs/file-list.d.ts.map +1 -0
  41. package/dist/tasks/tabs/index.d.ts +34 -0
  42. package/dist/tasks/tabs/index.d.ts.map +1 -0
  43. package/dist/tasks/tabs/message-bubble.d.ts +14 -0
  44. package/dist/tasks/tabs/message-bubble.d.ts.map +1 -0
  45. package/dist/tasks/tabs/message-input.d.ts +16 -0
  46. package/dist/tasks/tabs/message-input.d.ts.map +1 -0
  47. package/dist/tasks/tabs/message-list.d.ts +9 -0
  48. package/dist/tasks/tabs/message-list.d.ts.map +1 -0
  49. package/dist/tasks/tabs/review-card.d.ts +10 -0
  50. package/dist/tasks/tabs/review-card.d.ts.map +1 -0
  51. package/dist/tasks/tabs/review-request-button.d.ts +10 -0
  52. package/dist/tasks/tabs/review-request-button.d.ts.map +1 -0
  53. package/dist/tasks/tabs/review-response-form.d.ts +11 -0
  54. package/dist/tasks/tabs/review-response-form.d.ts.map +1 -0
  55. package/dist/tasks/tabs/subtask-add-form.d.ts +9 -0
  56. package/dist/tasks/tabs/subtask-add-form.d.ts.map +1 -0
  57. package/dist/tasks/tabs/subtask-item.d.ts +12 -0
  58. package/dist/tasks/tabs/subtask-item.d.ts.map +1 -0
  59. package/dist/tasks/tabs/subtask-list.d.ts +8 -0
  60. package/dist/tasks/tabs/subtask-list.d.ts.map +1 -0
  61. package/dist/tasks/tabs/subtask-progress.d.ts +9 -0
  62. package/dist/tasks/tabs/subtask-progress.d.ts.map +1 -0
  63. package/dist/tasks/tabs/visibility-warning.d.ts +7 -0
  64. package/dist/tasks/tabs/visibility-warning.d.ts.map +1 -0
  65. package/dist/tasks/task-panel.d.ts +104 -0
  66. package/dist/tasks/task-panel.d.ts.map +1 -0
  67. package/dist/tasks/task-properties.d.ts +2 -12
  68. package/dist/tasks/task-properties.d.ts.map +1 -1
  69. package/dist/tasks/task-types.d.ts +104 -0
  70. package/dist/tasks/task-types.d.ts.map +1 -0
  71. package/docs/components/admin/admin-dashboard.md +6 -6
  72. package/docs/components/admin/admin-utils.md +2 -2
  73. package/docs/components/admin/break-admin.md +14 -14
  74. package/docs/components/board/board-provider.md +16 -0
  75. package/docs/components/board/column-empty.md +1 -1
  76. package/docs/components/board/task-card.md +4 -0
  77. package/docs/components/chat/streaming-text.md +1 -1
  78. package/docs/components/client/client-portal-header.md +2 -2
  79. package/docs/components/dashboard/attendance-cta.md +3 -3
  80. package/docs/components/dashboard/daily-brief.md +1 -1
  81. package/docs/components/tasks/activity-tab.md +4 -0
  82. package/docs/components/tasks/conversation-tab.md +4 -0
  83. package/docs/components/tasks/files-tab.md +4 -0
  84. package/docs/components/tasks/review-tab.md +5 -1
  85. package/docs/components/tasks/subtasks-tab.md +5 -0
  86. package/docs/components/tasks/task-assignee-picker.md +36 -0
  87. package/docs/components/tasks/task-column-picker.md +37 -0
  88. package/docs/components/tasks/task-date-picker.md +49 -0
  89. package/docs/components/tasks/task-detail-panel.md +256 -84
  90. package/docs/components/tasks/task-label-editor.md +42 -0
  91. package/docs/components/tasks/task-member-picker.md +35 -0
  92. package/docs/components/tasks/task-panel.md +89 -0
  93. package/docs/components/tasks/task-priority-picker.md +37 -0
  94. package/docs/components/tasks/task-properties.md +5 -0
  95. package/docs/components/tasks/task-visibility-picker.md +38 -0
  96. package/llms.txt +40 -13
  97. package/package.json +82 -82
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,82 +1,82 @@
1
- {
2
- "name": "@devalok/shilp-sutra-karm",
3
- "version": "0.18.1",
4
- "description": "Domain components for Karm — board, tasks, chat, dashboard, client, and admin",
5
- "license": "MIT",
6
- "type": "module",
7
- "main": "./dist/index.js",
8
- "module": "./dist/index.js",
9
- "types": "./dist/index.d.ts",
10
- "sideEffects": [
11
- "**/*.css"
12
- ],
13
- "exports": {
14
- ".": {
15
- "import": "./dist/index.js",
16
- "default": "./dist/index.js",
17
- "types": "./dist/index.d.ts"
18
- },
19
- "./board": {
20
- "import": "./dist/board/index.js",
21
- "default": "./dist/board/index.js",
22
- "types": "./dist/board/index.d.ts"
23
- },
24
- "./tasks": {
25
- "import": "./dist/tasks/index.js",
26
- "default": "./dist/tasks/index.js",
27
- "types": "./dist/tasks/index.d.ts"
28
- },
29
- "./chat": {
30
- "import": "./dist/chat/index.js",
31
- "default": "./dist/chat/index.js",
32
- "types": "./dist/chat/index.d.ts"
33
- },
34
- "./dashboard": {
35
- "import": "./dist/dashboard/index.js",
36
- "default": "./dist/dashboard/index.js",
37
- "types": "./dist/dashboard/index.d.ts"
38
- },
39
- "./client": {
40
- "import": "./dist/client/index.js",
41
- "default": "./dist/client/index.js",
42
- "types": "./dist/client/index.d.ts"
43
- },
44
- "./admin": {
45
- "import": "./dist/admin/index.js",
46
- "default": "./dist/admin/index.js",
47
- "types": "./dist/admin/index.d.ts"
48
- },
49
- "./docs/*": "./docs/components/*"
50
- },
51
- "files": [
52
- "dist",
53
- "docs/components",
54
- "README.md",
55
- "llms.txt"
56
- ],
57
- "scripts": {
58
- "build": "vite build && node scripts/inject-use-client.mjs",
59
- "typecheck": "tsc --noEmit",
60
- "lint": "eslint src/",
61
- "prepublishOnly": "pnpm build"
62
- },
63
- "peerDependencies": {
64
- "@devalok/shilp-sutra": ">=0.18.0",
65
- "@tabler/icons-react": "^3.0.0",
66
- "framer-motion": "^12.0.0",
67
- "react": "^18 || ^19",
68
- "react-dom": "^18 || ^19"
69
- },
70
- "devDependencies": {
71
- "@devalok/shilp-sutra": "workspace:*",
72
- "@dnd-kit/core": "^6.3.1",
73
- "@dnd-kit/sortable": "^10.0.0",
74
- "@dnd-kit/utilities": "^3.2.2",
75
- "class-variance-authority": "^0.7.1",
76
- "clsx": "^2.1.1",
77
- "date-fns": "^4.1.0",
78
- "framer-motion": "^12.36.0",
79
- "react-markdown": "^10.1.0",
80
- "tailwind-merge": "^3.0.1"
81
- }
82
- }
1
+ {
2
+ "name": "@devalok/shilp-sutra-karm",
3
+ "version": "0.19.0",
4
+ "description": "Domain components for Karm — board, tasks, chat, dashboard, client, and admin",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "sideEffects": [
11
+ "**/*.css"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "default": "./dist/index.js",
17
+ "types": "./dist/index.d.ts"
18
+ },
19
+ "./board": {
20
+ "import": "./dist/board/index.js",
21
+ "default": "./dist/board/index.js",
22
+ "types": "./dist/board/index.d.ts"
23
+ },
24
+ "./tasks": {
25
+ "import": "./dist/tasks/index.js",
26
+ "default": "./dist/tasks/index.js",
27
+ "types": "./dist/tasks/index.d.ts"
28
+ },
29
+ "./chat": {
30
+ "import": "./dist/chat/index.js",
31
+ "default": "./dist/chat/index.js",
32
+ "types": "./dist/chat/index.d.ts"
33
+ },
34
+ "./dashboard": {
35
+ "import": "./dist/dashboard/index.js",
36
+ "default": "./dist/dashboard/index.js",
37
+ "types": "./dist/dashboard/index.d.ts"
38
+ },
39
+ "./client": {
40
+ "import": "./dist/client/index.js",
41
+ "default": "./dist/client/index.js",
42
+ "types": "./dist/client/index.d.ts"
43
+ },
44
+ "./admin": {
45
+ "import": "./dist/admin/index.js",
46
+ "default": "./dist/admin/index.js",
47
+ "types": "./dist/admin/index.d.ts"
48
+ },
49
+ "./docs/*": "./docs/components/*"
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "docs/components",
54
+ "README.md",
55
+ "llms.txt"
56
+ ],
57
+ "scripts": {
58
+ "build": "vite build && node scripts/inject-use-client.mjs",
59
+ "typecheck": "tsc --noEmit",
60
+ "lint": "eslint src/",
61
+ "prepublishOnly": "pnpm build"
62
+ },
63
+ "peerDependencies": {
64
+ "@devalok/shilp-sutra": ">=0.18.0",
65
+ "@tabler/icons-react": "^3.0.0",
66
+ "framer-motion": "^12.0.0",
67
+ "react": "^18 || ^19",
68
+ "react-dom": "^18 || ^19"
69
+ },
70
+ "devDependencies": {
71
+ "@devalok/shilp-sutra": "workspace:*",
72
+ "@dnd-kit/core": "^6.3.1",
73
+ "@dnd-kit/sortable": "^10.0.0",
74
+ "@dnd-kit/utilities": "^3.2.2",
75
+ "class-variance-authority": "^0.7.1",
76
+ "clsx": "^2.1.1",
77
+ "date-fns": "^4.1.0",
78
+ "framer-motion": "^12.36.0",
79
+ "react-markdown": "^10.1.0",
80
+ "tailwind-merge": "^3.0.1"
81
+ }
82
+ }