@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.
- package/dist/_chunks/task-detail-panel.js +1339 -1144
- package/dist/tasks/activity-tab.d.ts +2 -11
- package/dist/tasks/activity-tab.d.ts.map +1 -1
- package/dist/tasks/conversation-tab.d.ts +2 -21
- package/dist/tasks/conversation-tab.d.ts.map +1 -1
- package/dist/tasks/files-tab.d.ts +2 -18
- package/dist/tasks/files-tab.d.ts.map +1 -1
- package/dist/tasks/index.d.ts +12 -6
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +765 -8
- package/dist/tasks/pickers/index.d.ts +16 -0
- package/dist/tasks/pickers/index.d.ts.map +1 -0
- package/dist/tasks/pickers/task-assignee-picker.d.ts +14 -0
- package/dist/tasks/pickers/task-assignee-picker.d.ts.map +1 -0
- package/dist/tasks/pickers/task-column-picker.d.ts +13 -0
- package/dist/tasks/pickers/task-column-picker.d.ts.map +1 -0
- package/dist/tasks/pickers/task-date-picker.d.ts +12 -0
- package/dist/tasks/pickers/task-date-picker.d.ts.map +1 -0
- package/dist/tasks/pickers/task-label-editor.d.ts +13 -0
- package/dist/tasks/pickers/task-label-editor.d.ts.map +1 -0
- package/dist/tasks/pickers/task-member-picker.d.ts +14 -0
- package/dist/tasks/pickers/task-member-picker.d.ts.map +1 -0
- package/dist/tasks/pickers/task-priority-picker.d.ts +12 -0
- package/dist/tasks/pickers/task-priority-picker.d.ts.map +1 -0
- package/dist/tasks/pickers/task-visibility-picker.d.ts +13 -0
- package/dist/tasks/pickers/task-visibility-picker.d.ts.map +1 -0
- package/dist/tasks/review-tab.d.ts +4 -20
- package/dist/tasks/review-tab.d.ts.map +1 -1
- package/dist/tasks/subtasks-tab.d.ts +2 -18
- package/dist/tasks/subtasks-tab.d.ts.map +1 -1
- package/dist/tasks/tabs/activity-entry.d.ts +9 -0
- package/dist/tasks/tabs/activity-entry.d.ts.map +1 -0
- package/dist/tasks/tabs/activity-timeline.d.ts +8 -0
- package/dist/tasks/tabs/activity-timeline.d.ts.map +1 -0
- package/dist/tasks/tabs/file-drop-zone.d.ts +10 -0
- package/dist/tasks/tabs/file-drop-zone.d.ts.map +1 -0
- package/dist/tasks/tabs/file-item.d.ts +11 -0
- package/dist/tasks/tabs/file-item.d.ts.map +1 -0
- package/dist/tasks/tabs/file-list.d.ts +8 -0
- package/dist/tasks/tabs/file-list.d.ts.map +1 -0
- package/dist/tasks/tabs/index.d.ts +34 -0
- package/dist/tasks/tabs/index.d.ts.map +1 -0
- package/dist/tasks/tabs/message-bubble.d.ts +14 -0
- package/dist/tasks/tabs/message-bubble.d.ts.map +1 -0
- package/dist/tasks/tabs/message-input.d.ts +16 -0
- package/dist/tasks/tabs/message-input.d.ts.map +1 -0
- package/dist/tasks/tabs/message-list.d.ts +9 -0
- package/dist/tasks/tabs/message-list.d.ts.map +1 -0
- package/dist/tasks/tabs/review-card.d.ts +10 -0
- package/dist/tasks/tabs/review-card.d.ts.map +1 -0
- package/dist/tasks/tabs/review-request-button.d.ts +10 -0
- package/dist/tasks/tabs/review-request-button.d.ts.map +1 -0
- package/dist/tasks/tabs/review-response-form.d.ts +11 -0
- package/dist/tasks/tabs/review-response-form.d.ts.map +1 -0
- package/dist/tasks/tabs/subtask-add-form.d.ts +9 -0
- package/dist/tasks/tabs/subtask-add-form.d.ts.map +1 -0
- package/dist/tasks/tabs/subtask-item.d.ts +12 -0
- package/dist/tasks/tabs/subtask-item.d.ts.map +1 -0
- package/dist/tasks/tabs/subtask-list.d.ts +8 -0
- package/dist/tasks/tabs/subtask-list.d.ts.map +1 -0
- package/dist/tasks/tabs/subtask-progress.d.ts +9 -0
- package/dist/tasks/tabs/subtask-progress.d.ts.map +1 -0
- package/dist/tasks/tabs/visibility-warning.d.ts +7 -0
- package/dist/tasks/tabs/visibility-warning.d.ts.map +1 -0
- package/dist/tasks/task-panel.d.ts +104 -0
- package/dist/tasks/task-panel.d.ts.map +1 -0
- package/dist/tasks/task-properties.d.ts +2 -12
- package/dist/tasks/task-properties.d.ts.map +1 -1
- package/dist/tasks/task-types.d.ts +104 -0
- package/dist/tasks/task-types.d.ts.map +1 -0
- package/docs/components/admin/admin-dashboard.md +6 -6
- package/docs/components/admin/admin-utils.md +2 -2
- package/docs/components/admin/break-admin.md +14 -14
- package/docs/components/board/board-provider.md +16 -0
- package/docs/components/board/column-empty.md +1 -1
- package/docs/components/board/task-card.md +4 -0
- package/docs/components/chat/streaming-text.md +1 -1
- package/docs/components/client/client-portal-header.md +2 -2
- package/docs/components/dashboard/attendance-cta.md +3 -3
- package/docs/components/dashboard/daily-brief.md +1 -1
- package/docs/components/tasks/activity-tab.md +4 -0
- package/docs/components/tasks/conversation-tab.md +4 -0
- package/docs/components/tasks/files-tab.md +4 -0
- package/docs/components/tasks/review-tab.md +5 -1
- package/docs/components/tasks/subtasks-tab.md +5 -0
- package/docs/components/tasks/task-assignee-picker.md +36 -0
- package/docs/components/tasks/task-column-picker.md +37 -0
- package/docs/components/tasks/task-date-picker.md +49 -0
- package/docs/components/tasks/task-detail-panel.md +256 -84
- package/docs/components/tasks/task-label-editor.md +42 -0
- package/docs/components/tasks/task-member-picker.md +35 -0
- package/docs/components/tasks/task-panel.md +89 -0
- package/docs/components/tasks/task-priority-picker.md +37 -0
- package/docs/components/tasks/task-properties.md +5 -0
- package/docs/components/tasks/task-visibility-picker.md +38 -0
- package/llms.txt +40 -13
- 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 {
|
|
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,
|
|
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
|
-
|
|
56
|
-
|
|
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
|
|
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.
|
|
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
|
+
}
|