@devalok/shilp-sutra-karm 0.1.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 (182) hide show
  1. package/dist/admin/adjustments/approved-adjustments.d.ts +10 -0
  2. package/dist/admin/adjustments/approved-adjustments.d.ts.map +1 -0
  3. package/dist/admin/adjustments/approved-adjustments.js +42 -0
  4. package/dist/admin/adjustments/index.d.ts +2 -0
  5. package/dist/admin/adjustments/index.d.ts.map +1 -0
  6. package/dist/admin/break/break-admin-skeleton.d.ts +3 -0
  7. package/dist/admin/break/break-admin-skeleton.d.ts.map +1 -0
  8. package/dist/admin/break/break-admin-skeleton.js +58 -0
  9. package/dist/admin/break/break-admin.d.ts +79 -0
  10. package/dist/admin/break/break-admin.d.ts.map +1 -0
  11. package/dist/admin/break/break-admin.js +346 -0
  12. package/dist/admin/break/break-balance.d.ts +14 -0
  13. package/dist/admin/break/break-balance.d.ts.map +1 -0
  14. package/dist/admin/break/break-balance.js +41 -0
  15. package/dist/admin/break/breaks.d.ts +21 -0
  16. package/dist/admin/break/breaks.d.ts.map +1 -0
  17. package/dist/admin/break/breaks.js +90 -0
  18. package/dist/admin/break/delete-break.d.ts +10 -0
  19. package/dist/admin/break/delete-break.d.ts.map +1 -0
  20. package/dist/admin/break/delete-break.js +53 -0
  21. package/dist/admin/break/edit-break-balance.d.ts +15 -0
  22. package/dist/admin/break/edit-break-balance.d.ts.map +1 -0
  23. package/dist/admin/break/edit-break-balance.js +111 -0
  24. package/dist/admin/break/edit-break.d.ts +23 -0
  25. package/dist/admin/break/edit-break.d.ts.map +1 -0
  26. package/dist/admin/break/edit-break.js +485 -0
  27. package/dist/admin/break/header.d.ts +22 -0
  28. package/dist/admin/break/header.d.ts.map +1 -0
  29. package/dist/admin/break/header.js +228 -0
  30. package/dist/admin/break/index.d.ts +18 -0
  31. package/dist/admin/break/index.d.ts.map +1 -0
  32. package/dist/admin/break/leave-request.d.ts +17 -0
  33. package/dist/admin/break/leave-request.d.ts.map +1 -0
  34. package/dist/admin/break/leave-request.js +162 -0
  35. package/dist/admin/break/use-break-date-picker.d.ts +25 -0
  36. package/dist/admin/break/use-break-date-picker.d.ts.map +1 -0
  37. package/dist/admin/break/use-break-date-picker.js +42 -0
  38. package/dist/admin/dashboard/admin-dashboard.d.ts +109 -0
  39. package/dist/admin/dashboard/admin-dashboard.d.ts.map +1 -0
  40. package/dist/admin/dashboard/admin-dashboard.js +336 -0
  41. package/dist/admin/dashboard/associate-detail.d.ts +36 -0
  42. package/dist/admin/dashboard/associate-detail.d.ts.map +1 -0
  43. package/dist/admin/dashboard/associate-detail.js +269 -0
  44. package/dist/admin/dashboard/attendance-overview.d.ts +11 -0
  45. package/dist/admin/dashboard/attendance-overview.d.ts.map +1 -0
  46. package/dist/admin/dashboard/attendance-overview.js +137 -0
  47. package/dist/admin/dashboard/break-request.d.ts +25 -0
  48. package/dist/admin/dashboard/break-request.d.ts.map +1 -0
  49. package/dist/admin/dashboard/break-request.js +174 -0
  50. package/dist/admin/dashboard/calendar.d.ts +7 -0
  51. package/dist/admin/dashboard/calendar.d.ts.map +1 -0
  52. package/dist/admin/dashboard/calendar.js +140 -0
  53. package/dist/admin/dashboard/correction-list.d.ts +21 -0
  54. package/dist/admin/dashboard/correction-list.d.ts.map +1 -0
  55. package/dist/admin/dashboard/correction-list.js +99 -0
  56. package/dist/admin/dashboard/dashboard-header.d.ts +18 -0
  57. package/dist/admin/dashboard/dashboard-header.d.ts.map +1 -0
  58. package/dist/admin/dashboard/dashboard-header.js +153 -0
  59. package/dist/admin/dashboard/dashboard-skeleton.d.ts +3 -0
  60. package/dist/admin/dashboard/dashboard-skeleton.d.ts.map +1 -0
  61. package/dist/admin/dashboard/dashboard-skeleton.js +110 -0
  62. package/dist/admin/dashboard/index.d.ts +13 -0
  63. package/dist/admin/dashboard/index.d.ts.map +1 -0
  64. package/dist/admin/dashboard/leave-requests.d.ts +26 -0
  65. package/dist/admin/dashboard/leave-requests.d.ts.map +1 -0
  66. package/dist/admin/dashboard/leave-requests.js +197 -0
  67. package/dist/admin/dashboard/render-date.d.ts +16 -0
  68. package/dist/admin/dashboard/render-date.d.ts.map +1 -0
  69. package/dist/admin/dashboard/render-date.js +143 -0
  70. package/dist/admin/dashboard/use-calendar-navigation.d.ts +60 -0
  71. package/dist/admin/dashboard/use-calendar-navigation.d.ts.map +1 -0
  72. package/dist/admin/dashboard/use-calendar-navigation.js +168 -0
  73. package/dist/admin/dashboard/use-leave-request-interaction.d.ts +21 -0
  74. package/dist/admin/dashboard/use-leave-request-interaction.d.ts.map +1 -0
  75. package/dist/admin/dashboard/use-leave-request-interaction.js +33 -0
  76. package/dist/admin/icons.d.ts +2 -0
  77. package/dist/admin/icons.d.ts.map +1 -0
  78. package/dist/admin/index.d.ts +9 -0
  79. package/dist/admin/index.d.ts.map +1 -0
  80. package/dist/admin/index.js +62 -0
  81. package/dist/admin/types.d.ts +113 -0
  82. package/dist/admin/types.d.ts.map +1 -0
  83. package/dist/admin/utils/date-range-utils.d.ts +35 -0
  84. package/dist/admin/utils/date-range-utils.d.ts.map +1 -0
  85. package/dist/admin/utils/date-range-utils.js +36 -0
  86. package/dist/admin/utils/date-utils.d.ts +29 -0
  87. package/dist/admin/utils/date-utils.d.ts.map +1 -0
  88. package/dist/admin/utils/date-utils.js +118 -0
  89. package/dist/admin/utils/emoji-utils.d.ts +3 -0
  90. package/dist/admin/utils/emoji-utils.d.ts.map +1 -0
  91. package/dist/admin/utils/emoji-utils.js +16 -0
  92. package/dist/admin/utils/render-adjustment-type.d.ts +17 -0
  93. package/dist/admin/utils/render-adjustment-type.d.ts.map +1 -0
  94. package/dist/admin/utils/render-adjustment-type.js +19 -0
  95. package/dist/admin/utils/render-status.d.ts +3 -0
  96. package/dist/admin/utils/render-status.d.ts.map +1 -0
  97. package/dist/admin/utils/render-status.js +21 -0
  98. package/dist/board/board-column.d.ts +20 -0
  99. package/dist/board/board-column.d.ts.map +1 -0
  100. package/dist/board/board-column.js +233 -0
  101. package/dist/board/index.d.ts +4 -0
  102. package/dist/board/index.d.ts.map +1 -0
  103. package/dist/board/index.js +9 -0
  104. package/dist/board/kanban-board.d.ts +17 -0
  105. package/dist/board/kanban-board.d.ts.map +1 -0
  106. package/dist/board/kanban-board.js +218 -0
  107. package/dist/board/task-card.d.ts +25 -0
  108. package/dist/board/task-card.d.ts.map +1 -0
  109. package/dist/board/task-card.js +169 -0
  110. package/dist/chat/chat-input.d.ts +10 -0
  111. package/dist/chat/chat-input.d.ts.map +1 -0
  112. package/dist/chat/chat-input.js +52 -0
  113. package/dist/chat/chat-panel.d.ts +31 -0
  114. package/dist/chat/chat-panel.d.ts.map +1 -0
  115. package/dist/chat/chat-panel.js +150 -0
  116. package/dist/chat/conversation-list.d.ts +17 -0
  117. package/dist/chat/conversation-list.d.ts.map +1 -0
  118. package/dist/chat/conversation-list.js +98 -0
  119. package/dist/chat/index.d.ts +6 -0
  120. package/dist/chat/index.d.ts.map +1 -0
  121. package/dist/chat/index.js +12 -0
  122. package/dist/chat/message-list.d.ts +16 -0
  123. package/dist/chat/message-list.d.ts.map +1 -0
  124. package/dist/chat/message-list.js +69 -0
  125. package/dist/chat/streaming-text.d.ts +6 -0
  126. package/dist/chat/streaming-text.d.ts.map +1 -0
  127. package/dist/chat/streaming-text.js +29 -0
  128. package/dist/client/accent-provider.d.ts +14 -0
  129. package/dist/client/accent-provider.d.ts.map +1 -0
  130. package/dist/client/accent-provider.js +21 -0
  131. package/dist/client/client-portal-header.d.ts +10 -0
  132. package/dist/client/client-portal-header.d.ts.map +1 -0
  133. package/dist/client/client-portal-header.js +47 -0
  134. package/dist/client/index.d.ts +4 -0
  135. package/dist/client/index.d.ts.map +1 -0
  136. package/dist/client/index.js +8 -0
  137. package/dist/client/project-card.d.ts +11 -0
  138. package/dist/client/project-card.d.ts.map +1 -0
  139. package/dist/client/project-card.js +59 -0
  140. package/dist/dashboard/attendance-cta.d.ts +22 -0
  141. package/dist/dashboard/attendance-cta.d.ts.map +1 -0
  142. package/dist/dashboard/attendance-cta.js +127 -0
  143. package/dist/dashboard/daily-brief.d.ts +13 -0
  144. package/dist/dashboard/daily-brief.d.ts.map +1 -0
  145. package/dist/dashboard/daily-brief.js +66 -0
  146. package/dist/dashboard/index.d.ts +3 -0
  147. package/dist/dashboard/index.d.ts.map +1 -0
  148. package/dist/dashboard/index.js +6 -0
  149. package/dist/index.d.ts +9 -0
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +93 -0
  152. package/dist/page-skeletons.d.ts +5 -0
  153. package/dist/page-skeletons.d.ts.map +1 -0
  154. package/dist/page-skeletons.js +129 -0
  155. package/dist/tasks/activity-tab.d.ts +20 -0
  156. package/dist/tasks/activity-tab.d.ts.map +1 -0
  157. package/dist/tasks/activity-tab.js +184 -0
  158. package/dist/tasks/conversation-tab.d.ts +45 -0
  159. package/dist/tasks/conversation-tab.d.ts.map +1 -0
  160. package/dist/tasks/conversation-tab.js +126 -0
  161. package/dist/tasks/files-tab.d.ts +28 -0
  162. package/dist/tasks/files-tab.d.ts.map +1 -0
  163. package/dist/tasks/files-tab.js +184 -0
  164. package/dist/tasks/index.d.ts +8 -0
  165. package/dist/tasks/index.d.ts.map +1 -0
  166. package/dist/tasks/index.js +16 -0
  167. package/dist/tasks/review-tab.d.ts +32 -0
  168. package/dist/tasks/review-tab.d.ts.map +1 -0
  169. package/dist/tasks/review-tab.js +169 -0
  170. package/dist/tasks/subtasks-tab.d.ts +36 -0
  171. package/dist/tasks/subtasks-tab.d.ts.map +1 -0
  172. package/dist/tasks/subtasks-tab.js +153 -0
  173. package/dist/tasks/task-constants.d.ts +9 -0
  174. package/dist/tasks/task-constants.d.ts.map +1 -0
  175. package/dist/tasks/task-constants.js +21 -0
  176. package/dist/tasks/task-detail-panel.d.ts +93 -0
  177. package/dist/tasks/task-detail-panel.d.ts.map +1 -0
  178. package/dist/tasks/task-detail-panel.js +208 -0
  179. package/dist/tasks/task-properties.d.ts +60 -0
  180. package/dist/tasks/task-properties.d.ts.map +1 -0
  181. package/dist/tasks/task-properties.js +316 -0
  182. package/package.json +67 -0
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ export interface Conversation {
3
+ id: string;
4
+ title: string | null;
5
+ updatedAt: string;
6
+ }
7
+ export interface ConversationListProps {
8
+ conversations: Conversation[];
9
+ activeConversationId?: string | null;
10
+ isLoading?: boolean;
11
+ onSelect: (id: string) => void;
12
+ onNewChat: () => void;
13
+ onArchive?: (id: string) => void;
14
+ onDelete?: (id: string) => void;
15
+ }
16
+ export declare const ConversationList: React.ForwardRefExoticComponent<ConversationListProps & React.RefAttributes<HTMLDivElement>>;
17
+ //# sourceMappingURL=conversation-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-list.d.ts","sourceRoot":"","sources":["../../src/chat/conversation-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AA+BD,eAAO,MAAM,gBAAgB,8FAgG5B,CAAA"}
@@ -0,0 +1,98 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import * as x from "react";
3
+ import { IconMessagePlus as h, IconMessage as p, IconArchive as u, IconTrash as b } from "@tabler/icons-react";
4
+ import { cn as y } from "@devalok/shilp-sutra/ui";
5
+ function N(d) {
6
+ const o = new Date(d), l = (/* @__PURE__ */ new Date()).getTime() - o.getTime(), r = Math.floor(l / 6e4);
7
+ if (r < 1) return "Just now";
8
+ if (r < 60) return `${r}m ago`;
9
+ const a = Math.floor(r / 60);
10
+ if (a < 24) return `${a}h ago`;
11
+ const i = Math.floor(a / 24);
12
+ return i < 7 ? `${i}d ago` : o.toLocaleDateString("en-IN", {
13
+ day: "numeric",
14
+ month: "short"
15
+ });
16
+ }
17
+ const g = x.forwardRef(
18
+ function({
19
+ conversations: o,
20
+ activeConversationId: c,
21
+ isLoading: l = !1,
22
+ onSelect: r,
23
+ onNewChat: a,
24
+ onArchive: i,
25
+ onDelete: m
26
+ }, f) {
27
+ return /* @__PURE__ */ s("div", { ref: f, className: "flex flex-1 flex-col overflow-hidden", children: [
28
+ /* @__PURE__ */ s("div", { className: "flex items-center justify-between border-b border-border px-ds-05 py-ds-04", children: [
29
+ /* @__PURE__ */ e("h3", { className: "text-ds-md font-semibold text-text-primary", children: "Conversations" }),
30
+ /* @__PURE__ */ s(
31
+ "button",
32
+ {
33
+ onClick: a,
34
+ className: "flex items-center gap-ds-02b rounded-ds-lg px-ds-03 py-ds-02b text-text-secondary transition-colors hover:bg-layer-02",
35
+ children: [
36
+ /* @__PURE__ */ e(h, { className: "h-ico-sm w-ico-sm" }),
37
+ /* @__PURE__ */ e("span", { className: "text-ds-sm", children: "New Chat" })
38
+ ]
39
+ }
40
+ )
41
+ ] }),
42
+ /* @__PURE__ */ e("div", { className: "no-scrollbar flex-1 overflow-y-auto", children: l ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ e("div", { className: "h-ico-md w-ico-md animate-spin rounded-ds-full border-2 border-text-secondary border-t-transparent" }) }) : o.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-center gap-ds-03 py-12", children: [
43
+ /* @__PURE__ */ e(p, { className: "h-ds-sm w-ds-sm text-text-placeholder" }),
44
+ /* @__PURE__ */ e("p", { className: "text-ds-md text-text-placeholder", children: "No conversations yet" })
45
+ ] }) : /* @__PURE__ */ e("div", { className: "flex flex-col", children: o.map((t) => /* @__PURE__ */ s(
46
+ "div",
47
+ {
48
+ className: y(
49
+ "group flex items-center gap-ds-04 border-b border-border-subtle px-ds-05 py-ds-04 transition-colors hover:bg-layer-02",
50
+ c === t.id && "bg-layer-02"
51
+ ),
52
+ children: [
53
+ /* @__PURE__ */ s(
54
+ "button",
55
+ {
56
+ onClick: () => r(t.id),
57
+ className: "flex min-w-0 flex-1 flex-col gap-ds-01 text-left",
58
+ children: [
59
+ /* @__PURE__ */ e("p", { className: "text-ds-md truncate text-text-primary", children: t.title || "Untitled conversation" }),
60
+ /* @__PURE__ */ e("p", { className: "text-ds-sm text-text-placeholder", children: N(t.updatedAt) })
61
+ ]
62
+ }
63
+ ),
64
+ /* @__PURE__ */ s("div", { className: "flex shrink-0 items-center gap-ds-02 opacity-0 transition-opacity group-hover:opacity-100", children: [
65
+ i && /* @__PURE__ */ e(
66
+ "button",
67
+ {
68
+ onClick: (n) => {
69
+ n.stopPropagation(), i(t.id);
70
+ },
71
+ className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-text-placeholder transition-colors hover:bg-field hover:text-text-secondary",
72
+ "aria-label": "Archive conversation",
73
+ children: /* @__PURE__ */ e(u, { className: "h-ico-sm w-ico-sm" })
74
+ }
75
+ ),
76
+ m && /* @__PURE__ */ e(
77
+ "button",
78
+ {
79
+ onClick: (n) => {
80
+ n.stopPropagation(), m(t.id);
81
+ },
82
+ className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-text-placeholder transition-colors hover:bg-error-surface hover:text-text-error",
83
+ "aria-label": "Delete conversation",
84
+ children: /* @__PURE__ */ e(b, { className: "h-ico-sm w-ico-sm" })
85
+ }
86
+ )
87
+ ] })
88
+ ]
89
+ },
90
+ t.id
91
+ )) }) })
92
+ ] });
93
+ }
94
+ );
95
+ g.displayName = "ConversationList";
96
+ export {
97
+ g as ConversationList
98
+ };
@@ -0,0 +1,6 @@
1
+ export { ChatPanel, type Agent, type ChatPanelProps } from './chat-panel';
2
+ export { ChatInput, type ChatInputProps } from './chat-input';
3
+ export { MessageList, type ChatMessage, type MessageListProps } from './message-list';
4
+ export { ConversationList, type Conversation, type ConversationListProps } from './conversation-list';
5
+ export { StreamingText, type StreamingTextProps } from './streaming-text';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { ChatPanel as r } from "./chat-panel.js";
2
+ import { ChatInput as a } from "./chat-input.js";
3
+ import { MessageList as p } from "./message-list.js";
4
+ import { ConversationList as f } from "./conversation-list.js";
5
+ import { StreamingText as s } from "./streaming-text.js";
6
+ export {
7
+ a as ChatInput,
8
+ r as ChatPanel,
9
+ f as ConversationList,
10
+ p as MessageList,
11
+ s as StreamingText
12
+ };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ export interface ChatMessage {
3
+ id: string;
4
+ role: 'USER' | 'ASSISTANT' | 'SYSTEM';
5
+ content: string;
6
+ }
7
+ export interface MessageListProps {
8
+ messages: ChatMessage[];
9
+ isStreaming?: boolean;
10
+ streamingText?: string;
11
+ isLoadingMessages?: boolean;
12
+ emptyTitle?: string;
13
+ emptyDescription?: string;
14
+ }
15
+ export declare const MessageList: React.ForwardRefExoticComponent<MessageListProps & React.RefAttributes<HTMLDivElement>>;
16
+ //# sourceMappingURL=message-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-list.d.ts","sourceRoot":"","sources":["../../src/chat/message-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAkDD,eAAO,MAAM,WAAW,yFA6IvB,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
+ import * as u from "react";
3
+ import { useRef as p, useCallback as h, useEffect as N } from "react";
4
+ import { StreamingText as b } from "./streaming-text.js";
5
+ import { IconRobot as i, IconAlertCircle as v, IconUser as y } from "@tabler/icons-react";
6
+ import g from "react-markdown";
7
+ const w = {
8
+ p: ({ children: l }) => /* @__PURE__ */ e("p", { className: "mb-ds-03 last:mb-0", children: l }),
9
+ code: ({
10
+ children: l,
11
+ className: t
12
+ }) => (t == null ? void 0 : t.includes("language-")) ? /* @__PURE__ */ e("code", { className: t, children: l }) : /* @__PURE__ */ e("code", { className: "rounded bg-field px-ds-02 py-ds-01 text-ds-md", children: l }),
13
+ pre: ({ children: l }) => /* @__PURE__ */ e("pre", { className: "mb-ds-03 overflow-x-auto rounded-ds-lg bg-field p-ds-04 text-ds-md", children: l }),
14
+ ul: ({ children: l }) => /* @__PURE__ */ e("ul", { className: "mb-ds-03 list-disc pl-ds-05", children: l }),
15
+ ol: ({ children: l }) => /* @__PURE__ */ e("ol", { className: "mb-ds-03 list-decimal pl-ds-05", children: l }),
16
+ li: ({ children: l }) => /* @__PURE__ */ e("li", { className: "mb-ds-02", children: l }),
17
+ strong: ({ children: l }) => /* @__PURE__ */ e("strong", { className: "font-semibold", children: l })
18
+ }, j = u.forwardRef(
19
+ function({
20
+ messages: t,
21
+ isStreaming: r = !1,
22
+ streamingText: c = "",
23
+ isLoadingMessages: o = !1,
24
+ emptyTitle: m = "Karm AI",
25
+ emptyDescription: x = "Ask me about tasks, projects, attendance, or anything else."
26
+ }, a) {
27
+ const n = p(null), f = h((s) => {
28
+ n.current = s, typeof a == "function" ? a(s) : a && (a.current = s);
29
+ }, [a]);
30
+ return N(() => {
31
+ const s = n.current;
32
+ s && (s.scrollTop = s.scrollHeight);
33
+ }, [t, c]), o ? /* @__PURE__ */ e("div", { ref: a, className: "flex flex-1 items-center justify-center", children: /* @__PURE__ */ d("div", { className: "flex flex-col items-center gap-ds-03", children: [
34
+ /* @__PURE__ */ e("div", { className: "h-ds-xs w-ds-xs animate-spin rounded-ds-full border-2 border-text-secondary border-t-transparent" }),
35
+ /* @__PURE__ */ e("p", { className: "text-ds-sm text-text-placeholder", children: "Loading messages..." })
36
+ ] }) }) : t.length === 0 && !r ? /* @__PURE__ */ e("div", { ref: a, className: "flex flex-1 items-center justify-center p-ds-06", children: /* @__PURE__ */ d("div", { className: "flex flex-col items-center gap-ds-04 text-center", children: [
37
+ /* @__PURE__ */ e("div", { className: "flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-full bg-field", children: /* @__PURE__ */ e(i, { className: "h-ico-lg w-ico-lg text-text-secondary" }) }),
38
+ /* @__PURE__ */ e("h3", { className: "text-ds-base text-text-primary", children: m }),
39
+ /* @__PURE__ */ e("p", { className: "text-ds-sm max-w-[280px] text-text-placeholder", children: x })
40
+ ] }) }) : /* @__PURE__ */ e("div", { ref: f, className: "no-scrollbar flex-1 overflow-y-auto p-ds-05", children: /* @__PURE__ */ d("div", { className: "flex flex-col gap-ds-05", role: "log", "aria-label": "Chat messages", children: [
41
+ t.map((s) => s.role === "SYSTEM" ? /* @__PURE__ */ e("div", { className: "flex justify-center", children: /* @__PURE__ */ d("div", { className: "flex items-center gap-ds-03 rounded-ds-lg bg-error-surface px-ds-04 py-ds-03", children: [
42
+ /* @__PURE__ */ e(v, { className: "h-ico-sm w-ico-sm shrink-0 text-text-error" }),
43
+ /* @__PURE__ */ e("p", { className: "text-ds-sm text-text-error", children: s.content })
44
+ ] }) }, s.id) : s.role === "USER" ? /* @__PURE__ */ e("div", { className: "flex justify-end", children: /* @__PURE__ */ d("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
45
+ /* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-br-ds-sm bg-interactive px-ds-04 py-ds-03 text-text-on-color", children: /* @__PURE__ */ e("p", { className: "text-ds-md whitespace-pre-wrap", children: s.content }) }),
46
+ /* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-field", children: /* @__PURE__ */ e(y, { className: "h-ico-sm w-ico-sm text-text-secondary" }) })
47
+ ] }) }, s.id) : /* @__PURE__ */ e("div", { className: "flex justify-start", children: /* @__PURE__ */ d("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
48
+ /* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-field", children: /* @__PURE__ */ e(i, { className: "h-ico-sm w-ico-sm text-text-secondary" }) }),
49
+ /* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-field px-ds-04 py-ds-03", children: /* @__PURE__ */ e("div", { className: "text-ds-md text-text-primary", children: /* @__PURE__ */ e(g, { components: w, children: s.content }) }) })
50
+ ] }) }, s.id)),
51
+ r && c && /* @__PURE__ */ e("div", { className: "flex justify-start", children: /* @__PURE__ */ d("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
52
+ /* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-field", children: /* @__PURE__ */ e(i, { className: "h-ico-sm w-ico-sm text-text-secondary" }) }),
53
+ /* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-field px-ds-04 py-ds-03", children: /* @__PURE__ */ e("div", { className: "text-ds-md text-text-primary", children: /* @__PURE__ */ e(b, { text: c }) }) })
54
+ ] }) }),
55
+ r && !c && /* @__PURE__ */ e("div", { className: "flex justify-start", children: /* @__PURE__ */ d("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
56
+ /* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-field", children: /* @__PURE__ */ e(i, { className: "h-ico-sm w-ico-sm text-text-secondary" }) }),
57
+ /* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-field px-ds-04 py-ds-03", children: /* @__PURE__ */ d("div", { className: "flex items-center gap-ds-02b py-ds-02", children: [
58
+ /* @__PURE__ */ e("div", { className: "h-2 w-2 animate-bounce rounded-ds-full bg-text-placeholder [animation-delay:0ms]" }),
59
+ /* @__PURE__ */ e("div", { className: "h-2 w-2 animate-bounce rounded-ds-full bg-text-placeholder [animation-delay:150ms]" }),
60
+ /* @__PURE__ */ e("div", { className: "h-2 w-2 animate-bounce rounded-ds-full bg-text-placeholder [animation-delay:300ms]" })
61
+ ] }) })
62
+ ] }) })
63
+ ] }) });
64
+ }
65
+ );
66
+ j.displayName = "MessageList";
67
+ export {
68
+ j as MessageList
69
+ };
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ export interface StreamingTextProps {
3
+ text: string;
4
+ }
5
+ export declare const StreamingText: React.ForwardRefExoticComponent<StreamingTextProps & React.RefAttributes<HTMLDivElement>>;
6
+ //# sourceMappingURL=streaming-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-text.d.ts","sourceRoot":"","sources":["../../src/chat/streaming-text.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,aAAa,2FAyCzB,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import i from "react-markdown";
4
+ const m = r.forwardRef(
5
+ function({ text: t }, o) {
6
+ return /* @__PURE__ */ l("div", { ref: o, children: [
7
+ /* @__PURE__ */ e(
8
+ i,
9
+ {
10
+ components: {
11
+ p: ({ children: s }) => /* @__PURE__ */ e("p", { className: "mb-ds-03 last:mb-0", children: s }),
12
+ code: ({ children: s, className: d }) => (d == null ? void 0 : d.includes("language-")) ? /* @__PURE__ */ e("code", { className: d, children: s }) : /* @__PURE__ */ e("code", { className: "rounded bg-field px-ds-02 py-ds-01 text-ds-md", children: s }),
13
+ pre: ({ children: s }) => /* @__PURE__ */ e("pre", { className: "mb-ds-03 overflow-x-auto rounded-ds-lg bg-field p-ds-04 text-ds-md", children: s }),
14
+ ul: ({ children: s }) => /* @__PURE__ */ e("ul", { className: "mb-ds-03 list-disc pl-ds-05", children: s }),
15
+ ol: ({ children: s }) => /* @__PURE__ */ e("ol", { className: "mb-ds-03 list-decimal pl-ds-05", children: s }),
16
+ li: ({ children: s }) => /* @__PURE__ */ e("li", { className: "mb-ds-02", children: s }),
17
+ strong: ({ children: s }) => /* @__PURE__ */ e("strong", { className: "font-semibold", children: s })
18
+ },
19
+ children: t
20
+ }
21
+ ),
22
+ /* @__PURE__ */ e("span", { className: "inline-block h-4 w-2 animate-pulse bg-text-secondary ml-ds-01" })
23
+ ] });
24
+ }
25
+ );
26
+ m.displayName = "StreamingText";
27
+ export {
28
+ m as StreamingText
29
+ };
@@ -0,0 +1,14 @@
1
+ export interface AccentProviderProps {
2
+ /** CSS custom properties string, e.g. "--color-accent: #d33163; --color-accent-light: #f7e9e9;" */
3
+ accentCss?: string | null;
4
+ }
5
+ /**
6
+ * Injects accent CSS custom properties onto the document root element.
7
+ * Uses useEffect to set properties imperatively rather than injecting a <style> tag.
8
+ */
9
+ declare function AccentProvider({ accentCss }: AccentProviderProps): null;
10
+ declare namespace AccentProvider {
11
+ var displayName: string;
12
+ }
13
+ export { AccentProvider };
14
+ //# sourceMappingURL=accent-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accent-provider.d.ts","sourceRoot":"","sources":["../../src/client/accent-provider.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,mBAAmB,QAkCzD;kBAlCQ,cAAc;;;AAsCvB,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { useEffect as p } from "react";
2
+ function s({ accentCss: o }) {
3
+ return p(() => {
4
+ if (!o) return;
5
+ const n = document.documentElement, l = o.split(";").map((e) => e.trim()).filter(Boolean), i = [];
6
+ for (const e of l) {
7
+ const t = e.indexOf(":");
8
+ if (t === -1) continue;
9
+ const r = e.slice(0, t).trim(), c = e.slice(t + 1).trim();
10
+ r && c && (n.style.setProperty(r, c), i.push(r));
11
+ }
12
+ return () => {
13
+ for (const e of i)
14
+ n.style.removeProperty(e);
15
+ };
16
+ }, [o]), null;
17
+ }
18
+ s.displayName = "AccentProvider";
19
+ export {
20
+ s as AccentProvider
21
+ };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ export interface ClientPortalHeaderProps extends React.HTMLAttributes<HTMLElement> {
3
+ orgName: string;
4
+ orgLogo?: string | null;
5
+ userName: string;
6
+ userAvatar?: string | null;
7
+ }
8
+ declare const ClientPortalHeader: React.ForwardRefExoticComponent<ClientPortalHeaderProps & React.RefAttributes<HTMLElement>>;
9
+ export { ClientPortalHeader };
10
+ //# sourceMappingURL=client-portal-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-portal-header.d.ts","sourceRoot":"","sources":["../../src/client/client-portal-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAChF,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,QAAA,MAAM,kBAAkB,6FAgEvB,CAAA;AAGD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import * as x from "react";
3
+ import { cn as f } from "@devalok/shilp-sutra/ui";
4
+ import { Avatar as b, AvatarImage as h, AvatarFallback as v } from "@devalok/shilp-sutra/ui";
5
+ const j = x.forwardRef(
6
+ ({ className: l, orgName: t, orgLogo: r, userName: i, userAvatar: d, children: m, ...n }, c) => {
7
+ const o = t.split(" ").map((a) => a[0]).join("").slice(0, 2).toUpperCase(), p = i.split(" ").map((a) => a[0]).join("").slice(0, 2).toUpperCase();
8
+ return /* @__PURE__ */ s(
9
+ "header",
10
+ {
11
+ ref: c,
12
+ className: f(
13
+ "flex h-16 items-center justify-between border-b border-border-subtle bg-layer-01 px-ds-06",
14
+ l
15
+ ),
16
+ ...n,
17
+ children: [
18
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-04", children: [
19
+ r ? /* @__PURE__ */ e(
20
+ "img",
21
+ {
22
+ src: r,
23
+ alt: t,
24
+ className: "h-ds-sm w-ds-sm rounded-ds-md object-cover"
25
+ }
26
+ ) : /* @__PURE__ */ e("div", { className: "flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-md bg-interactive text-ds-sm font-semibold text-text-on-color", children: o }),
27
+ /* @__PURE__ */ e("span", { className: "font-display text-ds-base font-semibold text-text-primary", children: t })
28
+ ] }),
29
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-04", children: [
30
+ m,
31
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03", children: [
32
+ /* @__PURE__ */ s(b, { className: "h-ds-sm w-ds-sm", children: [
33
+ d && /* @__PURE__ */ e(h, { src: d, alt: i }),
34
+ /* @__PURE__ */ e(v, { className: "bg-interactive-subtle text-ds-sm font-medium text-interactive", children: p })
35
+ ] }),
36
+ /* @__PURE__ */ e("span", { className: "hidden text-ds-md font-medium text-text-primary sm:inline", children: i })
37
+ ] })
38
+ ] })
39
+ ]
40
+ }
41
+ );
42
+ }
43
+ );
44
+ j.displayName = "ClientPortalHeader";
45
+ export {
46
+ j as ClientPortalHeader
47
+ };
@@ -0,0 +1,4 @@
1
+ export { AccentProvider, type AccentProviderProps } from './accent-provider';
2
+ export { ClientPortalHeader, type ClientPortalHeaderProps } from './client-portal-header';
3
+ export { ProjectCard, type ProjectCardProps } from './project-card';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { AccentProvider as o } from "./accent-provider.js";
2
+ import { ClientPortalHeader as a } from "./client-portal-header.js";
3
+ import { ProjectCard as d } from "./project-card.js";
4
+ export {
5
+ o as AccentProvider,
6
+ a as ClientPortalHeader,
7
+ d as ProjectCard
8
+ };
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ export interface ProjectCardProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ name: string;
4
+ description?: string | null;
5
+ status: 'active' | 'completed' | 'paused';
6
+ taskCount?: number;
7
+ completedTasks?: number;
8
+ }
9
+ declare const ProjectCard: React.ForwardRefExoticComponent<ProjectCardProps & React.RefAttributes<HTMLDivElement>>;
10
+ export { ProjectCard };
11
+ //# sourceMappingURL=project-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-card.d.ts","sourceRoot":"","sources":["../../src/client/project-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAQD,QAAA,MAAM,WAAW,yFAkDhB,CAAA;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { jsxs as e, jsx as r } from "react/jsx-runtime";
2
+ import * as m from "react";
3
+ import { cn as p } from "@devalok/shilp-sutra/ui";
4
+ import { Badge as h } from "@devalok/shilp-sutra/ui";
5
+ import { Progress as b } from "@devalok/shilp-sutra/ui";
6
+ const f = {
7
+ active: "success",
8
+ completed: "info",
9
+ paused: "warning"
10
+ }, x = m.forwardRef(
11
+ ({
12
+ className: i,
13
+ name: c,
14
+ description: a,
15
+ status: t,
16
+ taskCount: s = 0,
17
+ completedTasks: d = 0,
18
+ ...n
19
+ }, l) => {
20
+ const o = s > 0 ? Math.round(d / s * 100) : 0;
21
+ return /* @__PURE__ */ e(
22
+ "div",
23
+ {
24
+ ref: l,
25
+ className: p(
26
+ "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",
27
+ i
28
+ ),
29
+ ...n,
30
+ children: [
31
+ /* @__PURE__ */ e("div", { className: "mb-ds-04 flex items-start justify-between", children: [
32
+ /* @__PURE__ */ r("h3", { className: "font-display text-ds-base font-semibold text-text-primary", children: c }),
33
+ /* @__PURE__ */ r(h, { variant: f[t], size: "sm", children: t })
34
+ ] }),
35
+ a && /* @__PURE__ */ r("p", { className: "mb-ds-05 line-clamp-2 text-ds-md text-text-secondary", children: a }),
36
+ /* @__PURE__ */ e("div", { className: "space-y-ds-03", children: [
37
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-between text-ds-sm text-text-helper", children: [
38
+ /* @__PURE__ */ e("span", { children: [
39
+ d,
40
+ " / ",
41
+ s,
42
+ " tasks"
43
+ ] }),
44
+ /* @__PURE__ */ e("span", { children: [
45
+ o,
46
+ "%"
47
+ ] })
48
+ ] }),
49
+ /* @__PURE__ */ r(b, { value: o, className: "h-ds-02b", "aria-label": "Project progress" })
50
+ ] })
51
+ ]
52
+ }
53
+ );
54
+ }
55
+ );
56
+ x.displayName = "ProjectCard";
57
+ export {
58
+ x as ProjectCard
59
+ };
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ interface AttendanceData {
3
+ attendance: {
4
+ id: string;
5
+ status: string;
6
+ timeIn: string | null;
7
+ timeOut: string | null;
8
+ };
9
+ breakReason: string | null;
10
+ }
11
+ export interface AttendanceCTAProps {
12
+ userName: string;
13
+ attendance: AttendanceData | null;
14
+ canMarkAttendance: boolean;
15
+ onMarkAttendance?: () => void;
16
+ isSubmitting?: boolean;
17
+ /** Optional custom time formatter. Defaults to toLocaleTimeString with IST. */
18
+ formatTime?: (timeStr: string) => string;
19
+ }
20
+ declare const AttendanceCTA: React.ForwardRefExoticComponent<AttendanceCTAProps & React.RefAttributes<HTMLDivElement>>;
21
+ export default AttendanceCTA;
22
+ //# sourceMappingURL=attendance-cta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attendance-cta.d.ts","sourceRoot":"","sources":["../../src/dashboard/attendance-cta.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,UAAU,cAAc;IACtB,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB,CAAA;IACD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAA;IACjC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC;AAoCD,QAAA,MAAM,aAAa,2FAmJlB,CAAA;AAID,eAAe,aAAa,CAAA"}