@devalok/shilp-sutra-karm 0.16.0 → 0.17.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 (142) hide show
  1. package/dist/_chunks/chat-panel.js +292 -230
  2. package/dist/_chunks/kanban-board.js +1113 -1078
  3. package/dist/_chunks/project-card.js +51 -51
  4. package/dist/_chunks/render-adjustment-type.js +2044 -2037
  5. package/dist/_chunks/sidebar-scratchpad.js +508 -0
  6. package/dist/_chunks/task-detail-panel.js +774 -752
  7. package/dist/_chunks/vendor.js +10425 -5216
  8. package/dist/admin/adjustments/approved-adjustments.d.ts +2 -1
  9. package/dist/admin/adjustments/approved-adjustments.d.ts.map +1 -1
  10. package/dist/admin/adjustments/index.d.ts +1 -0
  11. package/dist/admin/break/break-admin-skeleton.d.ts +2 -1
  12. package/dist/admin/break/break-admin-skeleton.d.ts.map +1 -1
  13. package/dist/admin/break/break-admin.d.ts +2 -1
  14. package/dist/admin/break/break-admin.d.ts.map +1 -1
  15. package/dist/admin/break/break-balance.d.ts +2 -1
  16. package/dist/admin/break/break-balance.d.ts.map +1 -1
  17. package/dist/admin/break/breaks.d.ts +2 -1
  18. package/dist/admin/break/breaks.d.ts.map +1 -1
  19. package/dist/admin/break/delete-break.d.ts +2 -1
  20. package/dist/admin/break/delete-break.d.ts.map +1 -1
  21. package/dist/admin/break/edit-break-balance.d.ts +2 -1
  22. package/dist/admin/break/edit-break-balance.d.ts.map +1 -1
  23. package/dist/admin/break/edit-break.d.ts +2 -1
  24. package/dist/admin/break/edit-break.d.ts.map +1 -1
  25. package/dist/admin/break/header.d.ts +2 -1
  26. package/dist/admin/break/header.d.ts.map +1 -1
  27. package/dist/admin/break/index.d.ts +1 -0
  28. package/dist/admin/break/leave-request.d.ts +2 -1
  29. package/dist/admin/break/leave-request.d.ts.map +1 -1
  30. package/dist/admin/break/use-break-date-picker.d.ts +1 -0
  31. package/dist/admin/dashboard/admin-dashboard.d.ts +7 -6
  32. package/dist/admin/dashboard/admin-dashboard.d.ts.map +1 -1
  33. package/dist/admin/dashboard/associate-detail.d.ts +2 -1
  34. package/dist/admin/dashboard/associate-detail.d.ts.map +1 -1
  35. package/dist/admin/dashboard/attendance-overview.d.ts +2 -1
  36. package/dist/admin/dashboard/attendance-overview.d.ts.map +1 -1
  37. package/dist/admin/dashboard/break-request.d.ts +2 -1
  38. package/dist/admin/dashboard/break-request.d.ts.map +1 -1
  39. package/dist/admin/dashboard/calendar.d.ts +2 -1
  40. package/dist/admin/dashboard/calendar.d.ts.map +1 -1
  41. package/dist/admin/dashboard/correction-list.d.ts +2 -1
  42. package/dist/admin/dashboard/correction-list.d.ts.map +1 -1
  43. package/dist/admin/dashboard/dashboard-header.d.ts +2 -1
  44. package/dist/admin/dashboard/dashboard-header.d.ts.map +1 -1
  45. package/dist/admin/dashboard/dashboard-skeleton.d.ts +2 -1
  46. package/dist/admin/dashboard/dashboard-skeleton.d.ts.map +1 -1
  47. package/dist/admin/dashboard/index.d.ts +1 -0
  48. package/dist/admin/dashboard/leave-requests.d.ts +2 -1
  49. package/dist/admin/dashboard/leave-requests.d.ts.map +1 -1
  50. package/dist/admin/dashboard/render-date.d.ts +2 -1
  51. package/dist/admin/dashboard/render-date.d.ts.map +1 -1
  52. package/dist/admin/dashboard/use-calendar-navigation.d.ts +1 -0
  53. package/dist/admin/dashboard/use-calendar-navigation.d.ts.map +1 -1
  54. package/dist/admin/dashboard/use-leave-request-interaction.d.ts +1 -0
  55. package/dist/admin/icons.d.ts +1 -0
  56. package/dist/admin/index.d.ts +1 -0
  57. package/dist/admin/types.d.ts +1 -0
  58. package/dist/admin/utils/date-range-utils.d.ts +1 -0
  59. package/dist/admin/utils/date-utils.d.ts +1 -0
  60. package/dist/admin/utils/emoji-utils.d.ts +1 -0
  61. package/dist/admin/utils/render-adjustment-type.d.ts +1 -0
  62. package/dist/admin/utils/render-status.d.ts +1 -0
  63. package/dist/board/board-column.d.ts +2 -1
  64. package/dist/board/board-column.d.ts.map +1 -1
  65. package/dist/board/board-constants.d.ts +6 -5
  66. package/dist/board/board-constants.d.ts.map +1 -1
  67. package/dist/board/board-context.d.ts +2 -1
  68. package/dist/board/board-context.d.ts.map +1 -1
  69. package/dist/board/board-toolbar.d.ts +4 -3
  70. package/dist/board/board-toolbar.d.ts.map +1 -1
  71. package/dist/board/board-types.d.ts +1 -0
  72. package/dist/board/board-utils.d.ts +1 -0
  73. package/dist/board/bulk-action-bar.d.ts +4 -3
  74. package/dist/board/bulk-action-bar.d.ts.map +1 -1
  75. package/dist/board/column-empty.d.ts +4 -6
  76. package/dist/board/column-empty.d.ts.map +1 -1
  77. package/dist/board/column-header.d.ts +4 -5
  78. package/dist/board/column-header.d.ts.map +1 -1
  79. package/dist/board/index.d.ts +1 -0
  80. package/dist/board/kanban-board.d.ts +1 -0
  81. package/dist/board/kanban-board.d.ts.map +1 -1
  82. package/dist/board/task-card.d.ts +5 -4
  83. package/dist/board/task-card.d.ts.map +1 -1
  84. package/dist/board/task-context-menu.d.ts +3 -4
  85. package/dist/board/task-context-menu.d.ts.map +1 -1
  86. package/dist/board/use-board-filters.d.ts +1 -0
  87. package/dist/board/use-board-keyboard.d.ts +1 -0
  88. package/dist/chat/chat-input.d.ts +2 -1
  89. package/dist/chat/chat-input.d.ts.map +1 -1
  90. package/dist/chat/chat-panel.d.ts +2 -1
  91. package/dist/chat/chat-panel.d.ts.map +1 -1
  92. package/dist/chat/conversation-list.d.ts +2 -1
  93. package/dist/chat/conversation-list.d.ts.map +1 -1
  94. package/dist/chat/index.d.ts +1 -0
  95. package/dist/chat/markdown-components.d.ts +1 -0
  96. package/dist/chat/message-list.d.ts +2 -1
  97. package/dist/chat/message-list.d.ts.map +1 -1
  98. package/dist/chat/streaming-text.d.ts +4 -1
  99. package/dist/chat/streaming-text.d.ts.map +1 -1
  100. package/dist/client/accent-provider.d.ts +1 -0
  101. package/dist/client/client-portal-header.d.ts +1 -0
  102. package/dist/client/index.d.ts +1 -0
  103. package/dist/client/project-card.d.ts +1 -0
  104. package/dist/dashboard/attendance-cta.d.ts +2 -1
  105. package/dist/dashboard/attendance-cta.d.ts.map +1 -1
  106. package/dist/dashboard/daily-brief.d.ts +2 -2
  107. package/dist/dashboard/daily-brief.d.ts.map +1 -1
  108. package/dist/dashboard/index.d.ts +1 -0
  109. package/dist/dashboard/index.js +5 -267
  110. package/dist/dashboard/scratchpad-widget.d.ts +2 -2
  111. package/dist/dashboard/scratchpad-widget.d.ts.map +1 -1
  112. package/dist/dashboard/sidebar-scratchpad.d.ts +2 -2
  113. package/dist/dashboard/sidebar-scratchpad.d.ts.map +1 -1
  114. package/dist/index.d.ts +3 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +211 -103
  117. package/dist/page-skeletons.d.ts +3 -2
  118. package/dist/page-skeletons.d.ts.map +1 -1
  119. package/dist/shell/karm-command-registry.d.ts +4 -0
  120. package/dist/shell/karm-command-registry.d.ts.map +1 -0
  121. package/dist/tasks/activity-tab.d.ts +2 -2
  122. package/dist/tasks/activity-tab.d.ts.map +1 -1
  123. package/dist/tasks/conversation-tab.d.ts +2 -2
  124. package/dist/tasks/conversation-tab.d.ts.map +1 -1
  125. package/dist/tasks/files-tab.d.ts +2 -2
  126. package/dist/tasks/files-tab.d.ts.map +1 -1
  127. package/dist/tasks/index.d.ts +1 -0
  128. package/dist/tasks/review-tab.d.ts +2 -2
  129. package/dist/tasks/review-tab.d.ts.map +1 -1
  130. package/dist/tasks/subtasks-tab.d.ts +2 -2
  131. package/dist/tasks/subtasks-tab.d.ts.map +1 -1
  132. package/dist/tasks/task-constants.d.ts +1 -0
  133. package/dist/tasks/task-detail-panel.d.ts +2 -1
  134. package/dist/tasks/task-detail-panel.d.ts.map +1 -1
  135. package/dist/tasks/task-properties.d.ts +2 -2
  136. package/dist/tasks/task-properties.d.ts.map +1 -1
  137. package/dist/tasks/task-utils.d.ts +9 -0
  138. package/dist/tasks/task-utils.d.ts.map +1 -0
  139. package/dist/utils/use-composed-ref.d.ts +1 -0
  140. package/llms.txt +3 -1
  141. package/package.json +80 -78
  142. package/dist/_chunks/daily-brief.js +0 -226
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import * as React from 'react';
2
3
  export interface Member {
3
4
  id: string;
@@ -28,14 +29,13 @@ interface TaskData {
28
29
  labels: string[];
29
30
  visibility: 'INTERNAL' | 'EVERYONE';
30
31
  }
31
- interface TaskPropertiesProps {
32
+ interface TaskPropertiesProps extends React.HTMLAttributes<HTMLDivElement> {
32
33
  task: TaskData;
33
34
  columns: Column[];
34
35
  members: Member[];
35
36
  onUpdate: (field: string, value: unknown) => void;
36
37
  onAssign: (userId: string) => void;
37
38
  onUnassign: (userId: string) => void;
38
- className?: string;
39
39
  /** When true, most fields are display-only except those in editableFields */
40
40
  readOnly?: boolean;
41
41
  /** Field names the client can still edit (e.g. ['priority', 'dueDate']) */
@@ -1 +1 @@
1
- {"version":3,"file":"task-properties.d.ts","sourceRoot":"","sources":["../../src/tasks/task-properties.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiC9B,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,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,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7B,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;CACpC;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1E,uEAAuE;IACvE,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;IACrB,gGAAgG;IAChG,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAA;CACvC;AA0DD,QAAA,MAAM,cAAc,4FAmXnB,CAAA;AAID,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"task-properties.d.ts","sourceRoot":"","sources":["../../src/tasks/task-properties.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiC9B,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,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,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7B,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;CACpC;AAED,UAAU,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1E,uEAAuE;IACvE,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;IACrB,gGAAgG;IAChG,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAA;CACvC;AA0DD,QAAA,MAAM,cAAc,4FAoXnB,CAAA;AAID,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ /**
3
+ * Shared utilities for task tab components.
4
+ */
5
+ /**
6
+ * Like formatRelativeTime but includes time in the >7d fallback.
7
+ */
8
+ export declare function formatTimestamp(dateStr: string): string;
9
+ //# sourceMappingURL=task-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-utils.d.ts","sourceRoot":"","sources":["../../src/tasks/task-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,UAc9C"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import * as React from 'react';
2
3
  export declare function useComposedRef<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T>;
3
4
  //# sourceMappingURL=use-composed-ref.d.ts.map
package/llms.txt CHANGED
@@ -29,6 +29,7 @@ import { KanbanBoard, TaskDetailPanel, ChatPanel } from '@devalok/shilp-sutra-ka
29
29
 
30
30
  BoardTask shape: { id, title, priority, labels[], dueDate, isBlocked, assignees[] }
31
31
  BoardData shape: { columns: [{ id, name, isClientVisible, tasks[] }] }
32
+ Constants: COLUMN_WIDTH(320), COLUMN_ACCENT_COLORS(8 category bg colors), PRIORITY_ICONS({ LOW: 'IconArrowDown', MEDIUM: 'IconArrowRight', HIGH: 'IconArrowUp', URGENT: 'IconAlertTriangle' }), PRIORITY_COLORS({ LOW: 'text-text-tertiary', MEDIUM: 'text-warning', HIGH: 'text-error', URGENT: 'text-error' }), DEFAULT_FILTERS({ search: '', assignees: [], priorities: [], labels: [], dueDateRange: null })
32
33
 
33
34
  Uses dnd-kit for drag-and-drop. KanbanBoard manages all DnD state internally.
34
35
  Pass `members` prop for explicit member list in assignment dropdowns — required for new/empty projects with no task assignees yet. Falls back to deriving members from task data when omitted.
@@ -57,7 +58,8 @@ and state updates. Example wiring a custom column header action:
57
58
  - ReviewTab: reviews[], members[], onRequestReview, onUpdateStatus
58
59
  - SubtasksTab: subtasks[], onCreateSubtask, onToggleSubtask, onClickSubtask?, readOnly?
59
60
 
60
- TaskDetailPanel opens as a Sheet with tabs: Properties, Subtasks, Review, Conversation, Files, Activity.
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.
61
63
  Supports clientMode for read-only client portal views.
62
64
  Priority values: 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT'
63
65
  Visibility: 'INTERNAL' | 'EVERYONE'
package/package.json CHANGED
@@ -1,78 +1,80 @@
1
- {
2
- "name": "@devalok/shilp-sutra-karm",
3
- "version": "0.16.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
- },
50
- "files": [
51
- "dist",
52
- "README.md",
53
- "llms.txt"
54
- ],
55
- "scripts": {
56
- "build": "vite build && node scripts/inject-use-client.mjs",
57
- "typecheck": "tsc --noEmit",
58
- "lint": "eslint src/",
59
- "prepublishOnly": "pnpm build"
60
- },
61
- "peerDependencies": {
62
- "@devalok/shilp-sutra": ">=0.7.0",
63
- "@tabler/icons-react": "^3.0.0",
64
- "react": "^18 || ^19",
65
- "react-dom": "^18 || ^19"
66
- },
67
- "devDependencies": {
68
- "@devalok/shilp-sutra": "workspace:*",
69
- "@dnd-kit/core": "^6.3.1",
70
- "@dnd-kit/sortable": "^10.0.0",
71
- "@dnd-kit/utilities": "^3.2.2",
72
- "class-variance-authority": "^0.7.1",
73
- "clsx": "^2.1.1",
74
- "date-fns": "^4.1.0",
75
- "react-markdown": "^10.1.0",
76
- "tailwind-merge": "^3.0.1"
77
- }
78
- }
1
+ {
2
+ "name": "@devalok/shilp-sutra-karm",
3
+ "version": "0.17.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
+ },
50
+ "files": [
51
+ "dist",
52
+ "README.md",
53
+ "llms.txt"
54
+ ],
55
+ "scripts": {
56
+ "build": "vite build && node scripts/inject-use-client.mjs",
57
+ "typecheck": "tsc --noEmit",
58
+ "lint": "eslint src/",
59
+ "prepublishOnly": "pnpm build"
60
+ },
61
+ "peerDependencies": {
62
+ "@devalok/shilp-sutra": ">=0.7.0",
63
+ "@tabler/icons-react": "^3.0.0",
64
+ "framer-motion": "^12.0.0",
65
+ "react": "^18 || ^19",
66
+ "react-dom": "^18 || ^19"
67
+ },
68
+ "devDependencies": {
69
+ "@devalok/shilp-sutra": "workspace:*",
70
+ "@dnd-kit/core": "^6.3.1",
71
+ "@dnd-kit/sortable": "^10.0.0",
72
+ "@dnd-kit/utilities": "^3.2.2",
73
+ "class-variance-authority": "^0.7.1",
74
+ "clsx": "^2.1.1",
75
+ "date-fns": "^4.1.0",
76
+ "framer-motion": "^12.36.0",
77
+ "react-markdown": "^10.1.0",
78
+ "tailwind-merge": "^3.0.1"
79
+ }
80
+ }
@@ -1,226 +0,0 @@
1
- "use client";
2
- import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- import * as w from "react";
4
- import { useState as k } from "react";
5
- import { IconCheck as D, IconCoffee as A, IconClock as C, IconArrowRight as M, IconSparkles as v, IconChevronDown as I, IconRefresh as T } from "@tabler/icons-react";
6
- import { cn as c } from "@devalok/shilp-sutra/ui/lib/utils";
7
- import { M as R } from "./vendor.js";
8
- function _() {
9
- const i = (/* @__PURE__ */ new Date()).getHours();
10
- return i < 12 ? "Good morning" : i < 17 ? "Good afternoon" : "Good evening";
11
- }
12
- function j() {
13
- return (/* @__PURE__ */ new Date()).toLocaleDateString("en-IN", {
14
- weekday: "long",
15
- day: "numeric",
16
- month: "long",
17
- year: "numeric",
18
- timeZone: "Asia/Kolkata"
19
- });
20
- }
21
- function B(i) {
22
- return new Date(i).toLocaleTimeString("en-IN", {
23
- hour: "2-digit",
24
- minute: "2-digit",
25
- hour12: !0,
26
- timeZone: "Asia/Kolkata"
27
- });
28
- }
29
- const G = w.forwardRef(
30
- function({
31
- userName: r,
32
- attendance: t,
33
- canMarkAttendance: m,
34
- onMarkAttendance: l,
35
- isSubmitting: a = !1,
36
- formatTime: u = B
37
- }, x) {
38
- var b, N;
39
- const f = ((b = t == null ? void 0 : t.attendance) == null ? void 0 : b.status) ?? "Not_Marked", h = f === "PRESENT" || a, p = f === "BREAK", g = (N = t == null ? void 0 : t.attendance) == null ? void 0 : N.timeIn, n = _(), o = (r == null ? void 0 : r.split(" ")[0]) || "there", d = j();
40
- return h && !p ? /* @__PURE__ */ e("div", { ref: x, className: "relative overflow-hidden rounded-ds-2xl border border-border bg-layer-01 shadow-01", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-ds-06 py-ds-05b sm:px-ds-07", children: [
41
- /* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-02", children: [
42
- /* @__PURE__ */ s("h2", { className: "text-ds-2xl text-text-primary", children: [
43
- n,
44
- ",",
45
- " ",
46
- /* @__PURE__ */ e("span", { className: "font-semibold italic text-interactive", children: o })
47
- ] }),
48
- /* @__PURE__ */ e("p", { className: "text-ds-md text-text-tertiary", children: d })
49
- ] }),
50
- /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03 rounded-ds-xl bg-success-surface px-ds-05 py-ds-03", children: [
51
- /* @__PURE__ */ e("div", { className: "flex h-ico-md w-ico-md items-center justify-center rounded-ds-full bg-text-success", children: /* @__PURE__ */ e(D, { className: "h-ico-sm w-ico-sm text-text-on-color" }) }),
52
- /* @__PURE__ */ s("span", { className: "text-ds-md font-semibold text-text-success", children: [
53
- "Marked at",
54
- " ",
55
- g ? u(g) : "--:--"
56
- ] })
57
- ] })
58
- ] }) }) : p ? /* @__PURE__ */ e("div", { ref: x, className: "relative overflow-hidden rounded-ds-2xl border border-border bg-layer-01 shadow-01", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-ds-06 py-ds-05b sm:px-ds-07", children: [
59
- /* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-02", children: [
60
- /* @__PURE__ */ s("h2", { className: "text-ds-2xl text-text-primary", children: [
61
- n,
62
- ",",
63
- " ",
64
- /* @__PURE__ */ e("span", { className: "font-semibold italic text-interactive", children: o })
65
- ] }),
66
- /* @__PURE__ */ e("p", { className: "text-ds-md text-text-tertiary", children: d })
67
- ] }),
68
- /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03 rounded-ds-xl bg-warning-surface px-ds-05 py-ds-03", children: [
69
- /* @__PURE__ */ e(A, { className: "h-ico-sm w-ico-sm text-text-warning" }),
70
- /* @__PURE__ */ s("span", { className: "text-ds-md font-semibold text-text-warning", children: [
71
- "On break",
72
- t != null && t.breakReason ? ` — ${t.breakReason}` : ""
73
- ] })
74
- ] })
75
- ] }) }) : m ? /* @__PURE__ */ e("div", { ref: x, className: "relative overflow-hidden rounded-ds-2xl border border-border bg-gradient-to-br from-interactive-subtle via-background to-success-surface", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-ds-06 py-ds-07 sm:px-ds-07 sm:py-ds-08", children: [
76
- /* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-02b", children: [
77
- /* @__PURE__ */ s("h2", { className: "text-ds-3xl text-text-primary", children: [
78
- n,
79
- ",",
80
- " ",
81
- /* @__PURE__ */ e("span", { className: "font-semibold italic text-interactive", children: o })
82
- ] }),
83
- /* @__PURE__ */ e("div", { className: "flex items-center gap-ds-03", children: /* @__PURE__ */ e("p", { className: "text-ds-base text-text-tertiary", children: d }) })
84
- ] }),
85
- /* @__PURE__ */ s(
86
- "button",
87
- {
88
- type: "button",
89
- onClick: l,
90
- disabled: a,
91
- className: "flex items-center gap-ds-03 rounded-ds-xl bg-interactive px-ds-06 py-ds-04 font-semibold text-text-on-color shadow-02 transition-all duration-moderate-01 ease-expressive-standard hover:-translate-y-0.5 hover:shadow-03 active:translate-y-0 active:scale-[0.98] disabled:opacity-[0.38]",
92
- children: [
93
- a ? "Marking..." : "Mark Attendance",
94
- !a && /* @__PURE__ */ e(M, { className: "h-ico-sm w-ico-sm" })
95
- ]
96
- }
97
- )
98
- ] }) }) : /* @__PURE__ */ e("div", { ref: x, className: "relative overflow-hidden rounded-ds-2xl border border-border bg-layer-01 shadow-01", children: /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-ds-06 py-ds-06 sm:px-ds-07 sm:py-ds-07", children: [
99
- /* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-02b", children: [
100
- /* @__PURE__ */ s("h2", { className: "text-ds-3xl text-text-primary", children: [
101
- n,
102
- ",",
103
- " ",
104
- /* @__PURE__ */ e("span", { className: "font-semibold italic text-interactive", children: o })
105
- ] }),
106
- /* @__PURE__ */ e("p", { className: "text-ds-base text-text-tertiary", children: d })
107
- ] }),
108
- /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03 rounded-ds-xl bg-layer-02 px-ds-05 py-ds-03", children: [
109
- /* @__PURE__ */ e(C, { className: "h-ico-sm w-ico-sm text-text-placeholder" }),
110
- /* @__PURE__ */ e("span", { className: "text-ds-md text-text-placeholder", children: "Attendance window closed" })
111
- ] })
112
- ] }) });
113
- }
114
- );
115
- G.displayName = "AttendanceCTA";
116
- function O(i) {
117
- const r = new Date(i), m = (/* @__PURE__ */ new Date()).getTime() - r.getTime(), l = Math.floor(m / 6e4);
118
- if (l < 1) return "just now";
119
- if (l < 60) return `${l}m ago`;
120
- const a = Math.floor(l / 60);
121
- return a < 24 ? `${a}h ago` : `${Math.floor(a / 24)}d ago`;
122
- }
123
- const y = [
124
- "bg-category-amber",
125
- "bg-category-teal",
126
- "bg-category-cyan",
127
- "bg-interactive",
128
- "bg-accent"
129
- ], $ = w.forwardRef(
130
- function({
131
- data: r,
132
- loading: t = !1,
133
- onRefresh: m,
134
- unavailable: l = !1,
135
- collapsible: a = !0,
136
- defaultCollapsed: u = !1,
137
- title: x,
138
- className: f
139
- }, h) {
140
- const [p, g] = k(u), n = x ?? "Morning Brief";
141
- if (t && !r)
142
- return /* @__PURE__ */ s("div", { ref: h, className: c("flex flex-col gap-ds-04 rounded-ds-2xl border border-border bg-layer-01 shadow-01 p-ds-05b", f), children: [
143
- /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03", children: [
144
- /* @__PURE__ */ e("div", { className: "h-ico-sm w-ico-sm animate-pulse rounded bg-layer-02" }),
145
- /* @__PURE__ */ e("div", { className: "h-4 w-24 animate-pulse rounded bg-layer-02" })
146
- ] }),
147
- [1, 2, 3].map((d) => /* @__PURE__ */ s("div", { className: "flex items-start gap-ds-04", children: [
148
- /* @__PURE__ */ e("div", { className: "mt-ds-02b h-2 w-2 shrink-0 animate-pulse rounded-ds-full bg-layer-02" }),
149
- /* @__PURE__ */ e(
150
- "div",
151
- {
152
- className: "h-4 animate-pulse rounded bg-layer-02",
153
- style: { width: `${60 + d * 10}%` }
154
- }
155
- )
156
- ] }, d))
157
- ] });
158
- if (l)
159
- return /* @__PURE__ */ s("div", { ref: h, className: c("flex items-center gap-ds-03 rounded-ds-2xl border border-border bg-layer-01 shadow-01 px-ds-05b py-ds-05", f), children: [
160
- /* @__PURE__ */ e(v, { className: "h-ico-sm w-ico-sm text-text-placeholder" }),
161
- /* @__PURE__ */ e("span", { className: "text-ds-sm text-text-placeholder", children: "AI brief unavailable" })
162
- ] });
163
- if (!r || r.brief.length === 0) return null;
164
- const o = !a || !p;
165
- return /* @__PURE__ */ s("div", { ref: h, className: c("flex flex-col rounded-ds-2xl border border-border bg-layer-01 shadow-01", f), children: [
166
- /* @__PURE__ */ s("div", { className: "flex items-center justify-between px-ds-05b py-ds-05", children: [
167
- a ? /* @__PURE__ */ s(
168
- "button",
169
- {
170
- type: "button",
171
- "aria-label": "Toggle brief",
172
- "aria-expanded": o,
173
- onClick: () => g(!p),
174
- className: "flex flex-1 items-center gap-ds-03 transition-colors hover:opacity-80",
175
- children: [
176
- /* @__PURE__ */ e(v, { className: "h-ico-sm w-ico-sm text-interactive" }),
177
- /* @__PURE__ */ e("span", { className: "text-ds-base font-semibold text-text-primary", children: n }),
178
- /* @__PURE__ */ e(
179
- I,
180
- {
181
- className: c(
182
- "h-ico-sm w-ico-sm text-text-placeholder transition-transform duration-200",
183
- o && "rotate-180"
184
- )
185
- }
186
- )
187
- ]
188
- }
189
- ) : /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03", children: [
190
- /* @__PURE__ */ e(v, { className: "h-ico-sm w-ico-sm text-interactive" }),
191
- /* @__PURE__ */ e("span", { className: "text-ds-base font-semibold text-text-primary", children: n })
192
- ] }),
193
- /* @__PURE__ */ e("div", { className: "flex items-center gap-ds-02", children: m && /* @__PURE__ */ e(
194
- "button",
195
- {
196
- type: "button",
197
- onClick: m,
198
- "aria-label": "Refresh brief",
199
- className: "p-1.5 rounded hover:bg-layer-02 transition-colors",
200
- children: /* @__PURE__ */ e(T, { className: c("h-ico-sm w-ico-sm text-text-placeholder", t && "animate-spin") })
201
- }
202
- ) })
203
- ] }),
204
- /* @__PURE__ */ e("div", { className: c("grid transition-[grid-template-rows] duration-200", o ? "grid-rows-[1fr]" : "grid-rows-[0fr]"), children: /* @__PURE__ */ e("div", { className: "overflow-hidden", children: /* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-03 border-t border-border px-ds-05b pb-ds-05b pt-ds-05", children: [
205
- r.brief.map((d, b) => /* @__PURE__ */ s("div", { className: "flex items-start gap-ds-04", children: [
206
- /* @__PURE__ */ e(
207
- "div",
208
- {
209
- className: c("mt-ds-02b h-2 w-2 shrink-0 rounded-ds-full", y[b % y.length])
210
- }
211
- ),
212
- /* @__PURE__ */ e("div", { className: "text-ds-md text-text-secondary [&_p]:mb-0 [&_strong]:font-semibold [&_code]:rounded [&_code]:bg-field [&_code]:px-1 [&_code]:py-ds-01 [&_code]:text-ds-sm [&_a]:text-interactive [&_a]:underline", children: /* @__PURE__ */ e(R, { children: d }) })
213
- ] }, b)),
214
- /* @__PURE__ */ s("div", { className: "mt-ds-02 text-ds-xs text-text-placeholder", children: [
215
- "Generated ",
216
- O(r.generatedAt)
217
- ] })
218
- ] }) }) })
219
- ] });
220
- }
221
- );
222
- $.displayName = "DailyBrief";
223
- export {
224
- G as A,
225
- $ as D
226
- };