@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,228 @@
1
+ import { jsxs as s, jsx as e, Fragment as M } from "react/jsx-runtime";
2
+ import * as F from "react";
3
+ import { Fragment as j } from "react";
4
+ import { DropdownMenu as m, DropdownMenuTrigger as o, DropdownMenuContent as x, DropdownMenuItem as h } from "@devalok/shilp-sutra/ui";
5
+ import { Button as C } from "@devalok/shilp-sutra/ui";
6
+ import { IconButton as i } from "@devalok/shilp-sutra/ui";
7
+ import { IconX as u, IconUser as D, IconChevronDown as p, IconCalendar as Y, IconCalendarEvent as I, IconChevronLeft as N, IconChevronRight as f } from "@tabler/icons-react";
8
+ const b = [
9
+ { id: 1, name: "January" },
10
+ { id: 2, name: "February" },
11
+ { id: 3, name: "March" },
12
+ { id: 4, name: "April" },
13
+ { id: 5, name: "May" },
14
+ { id: 6, name: "June" },
15
+ { id: 7, name: "July" },
16
+ { id: 8, name: "August" },
17
+ { id: 9, name: "September" },
18
+ { id: 10, name: "October" },
19
+ { id: 11, name: "November" },
20
+ { id: 12, name: "December" }
21
+ ], S = F.forwardRef(
22
+ function({
23
+ filters: a,
24
+ onFilterChange: y,
25
+ breakBalance: n,
26
+ userImages: r,
27
+ users: c
28
+ }, w) {
29
+ const d = (t) => {
30
+ y(t(a));
31
+ }, g = () => {
32
+ d((t) => ({
33
+ ...t,
34
+ currMonth: t.currMonth === 0 ? 11 : t.currMonth - 1
35
+ }));
36
+ }, v = () => {
37
+ d((t) => ({
38
+ ...t,
39
+ currMonth: t.currMonth === 11 ? 0 : t.currMonth + 1
40
+ }));
41
+ }, A = () => {
42
+ d((t) => ({
43
+ ...t,
44
+ dateFilterStart: new Date(t.currYear, t.currMonth, 1),
45
+ dateFilterEnd: new Date(t.currYear, t.currMonth + 1, 0),
46
+ isOpen: !1
47
+ }));
48
+ };
49
+ return /* @__PURE__ */ s("div", { ref: w, className: "flex min-w-[800px] items-center justify-between bg-field px-ds-06 py-ds-05b max-md:justify-start max-md:gap-ds-05b max-lg:min-w-[100%]", children: [
50
+ /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-05", children: a.selectedAssociate && /* @__PURE__ */ s(M, { children: [
51
+ /* @__PURE__ */ e("p", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: "Break Balance" }),
52
+ /* @__PURE__ */ s("div", { className: "flex items-end", children: [
53
+ /* @__PURE__ */ e("p", { className: "text-ds-5xl font-semibold mr-ds-02 text-interactive", children: (n == null ? void 0 : n.remainingDays) || 0 }),
54
+ /* @__PURE__ */ s("p", { className: "text-ds-2xl translate-y-[-5px] text-text-placeholder", children: [
55
+ "/ ",
56
+ (n == null ? void 0 : n.breakBalance) || 0
57
+ ] })
58
+ ] })
59
+ ] }) }),
60
+ /* @__PURE__ */ s("header", { className: "flex items-center gap-ds-04", children: [
61
+ a.selectedAssociate ? /* @__PURE__ */ s("div", { className: "text-ds-md flex flex-row items-center justify-start gap-ds-02 rounded-ds-md bg-interactive p-ds-02b text-text-on-color", children: [
62
+ /* @__PURE__ */ s("div", { className: "flex items-center justify-start gap-ds-01", children: [
63
+ r[a.selectedAssociate.id] ? /* @__PURE__ */ e(
64
+ "img",
65
+ {
66
+ src: r[a.selectedAssociate.id],
67
+ alt: `${a.selectedAssociate.name}'s avatar`,
68
+ className: "h-ico-md w-ico-md rounded-ds-full"
69
+ }
70
+ ) : /* @__PURE__ */ e("div", { className: "flex h-ico-md w-ico-md items-center justify-center rounded-ds-full bg-layer-02", children: /* @__PURE__ */ e("span", { className: "text-interactive", children: a.selectedAssociate.name.charAt(0) }) }),
71
+ /* @__PURE__ */ e("span", { className: "text-ds-md mx-ds-01 text-text-on-color", children: a.selectedAssociate.name })
72
+ ] }),
73
+ /* @__PURE__ */ e(
74
+ "button",
75
+ {
76
+ onClick: () => d((t) => ({
77
+ ...t,
78
+ selectedAssociate: null
79
+ })),
80
+ className: "border-0 p-0",
81
+ children: /* @__PURE__ */ e(u, { className: "h-ico-sm w-ico-sm text-text-on-color" })
82
+ }
83
+ )
84
+ ] }) : /* @__PURE__ */ s(m, { children: [
85
+ /* @__PURE__ */ s(o, { className: "text-ds-md flex flex-row items-center justify-between rounded-ds-md border border-border-subtle bg-layer-01 px-ds-03 py-ds-02b", children: [
86
+ /* @__PURE__ */ s("div", { className: "flex items-center", children: [
87
+ /* @__PURE__ */ e(D, { className: "h-ico-sm w-ico-sm" }),
88
+ /* @__PURE__ */ e("span", { className: "text-ds-md mx-ds-03 text-text-secondary max-lg:mx-0 max-lg:text-ds-sm", children: "Associate" })
89
+ ] }),
90
+ /* @__PURE__ */ e(p, { className: "h-ico-sm w-ico-sm" })
91
+ ] }),
92
+ /* @__PURE__ */ e(x, { className: "custom-scrollbar max-h-[400px] w-64 overflow-y-auto p-ds-03", children: (c == null ? void 0 : c.length) === 0 ? /* @__PURE__ */ e(h, { disabled: !0, children: "No users available" }) : c == null ? void 0 : c.map((t) => /* @__PURE__ */ e(j, { children: /* @__PURE__ */ s(
93
+ h,
94
+ {
95
+ onSelect: () => d((l) => ({
96
+ ...l,
97
+ selectedAssociate: t
98
+ })),
99
+ className: "flex items-center gap-ds-03 p-ds-03",
100
+ children: [
101
+ r[t.id] ? /* @__PURE__ */ e(
102
+ "img",
103
+ {
104
+ src: r[t.id],
105
+ alt: `${t.name}'s avatar`,
106
+ className: "h-ds-xs w-ds-xs rounded-ds-full"
107
+ }
108
+ ) : /* @__PURE__ */ e("div", { className: "flex h-ds-xs w-ds-xs items-center justify-center rounded-ds-full bg-layer-03", children: /* @__PURE__ */ e("span", { className: "text-ds-md text-interactive", children: t.name.charAt(0) }) }),
109
+ /* @__PURE__ */ e("span", { className: "text-ds-md text-text-secondary", children: t.name })
110
+ ]
111
+ },
112
+ t.id
113
+ ) }, t.id)) })
114
+ ] }),
115
+ a.dateFilterEnd && /* @__PURE__ */ s("div", { className: "text-ds-md flex items-center justify-between rounded-ds-md bg-interactive px-ds-03 py-ds-02b text-text-on-color", children: [
116
+ /* @__PURE__ */ s("div", { className: "flex items-center", children: [
117
+ /* @__PURE__ */ e(Y, {}),
118
+ /* @__PURE__ */ s("span", { className: "ml-ds-01 mr-ds-02", children: [
119
+ b[new Date(a.dateFilterStart).getMonth()].name,
120
+ ","
121
+ ] }),
122
+ /* @__PURE__ */ e("span", { className: "mr-ds-02", children: new Date(a.dateFilterStart).getFullYear() })
123
+ ] }),
124
+ /* @__PURE__ */ e(
125
+ "button",
126
+ {
127
+ onClick: () => {
128
+ d((t) => ({
129
+ ...t,
130
+ dateFilterStart: null,
131
+ dateFilterEnd: null
132
+ }));
133
+ },
134
+ className: "border-0 bg-transparent p-0",
135
+ children: /* @__PURE__ */ e(u, { className: "h-ico-sm w-ico-sm" })
136
+ }
137
+ )
138
+ ] }),
139
+ /* @__PURE__ */ s(
140
+ m,
141
+ {
142
+ open: a.isOpen,
143
+ onOpenChange: (t) => {
144
+ d((l) => ({ ...l, isOpen: t }));
145
+ },
146
+ children: [
147
+ /* @__PURE__ */ s(o, { className: "text-ds-md flex items-center justify-between rounded-ds-md border border-border-subtle bg-layer-01 p-ds-02b", children: [
148
+ /* @__PURE__ */ s("div", { className: "flex items-center", children: [
149
+ /* @__PURE__ */ e(I, {}),
150
+ /* @__PURE__ */ e("span", { className: "mx-ds-03 text-text-secondary", children: "Date" })
151
+ ] }),
152
+ /* @__PURE__ */ e(p, { className: "h-ico-sm w-ico-sm" })
153
+ ] }),
154
+ /* @__PURE__ */ e(x, { className: "mr-32 p-ds-04", children: /* @__PURE__ */ s("div", { className: "flex w-[140px] flex-col items-center justify-start", children: [
155
+ /* @__PURE__ */ s("div", { className: "flex w-full items-center justify-between", children: [
156
+ /* @__PURE__ */ e(
157
+ i,
158
+ {
159
+ size: "sm",
160
+ icon: /* @__PURE__ */ e(N, {}),
161
+ "aria-label": "Previous month",
162
+ onClick: g
163
+ }
164
+ ),
165
+ /* @__PURE__ */ e("span", { className: "text-ds-md text-text-secondary", children: b[a.currMonth].name }),
166
+ /* @__PURE__ */ e(
167
+ i,
168
+ {
169
+ size: "sm",
170
+ icon: /* @__PURE__ */ e(f, {}),
171
+ "aria-label": "Next month",
172
+ onClick: v
173
+ }
174
+ )
175
+ ] }),
176
+ /* @__PURE__ */ s("div", { className: "mt-ds-04 flex w-full items-center justify-between", children: [
177
+ /* @__PURE__ */ e(
178
+ i,
179
+ {
180
+ size: "sm",
181
+ icon: /* @__PURE__ */ e(N, {}),
182
+ "aria-label": "Previous year",
183
+ onClick: () => {
184
+ d((t) => ({
185
+ ...t,
186
+ currYear: t.currYear - 1
187
+ }));
188
+ }
189
+ }
190
+ ),
191
+ /* @__PURE__ */ e("span", { className: "text-ds-md text-text-secondary", children: a.currYear }),
192
+ /* @__PURE__ */ e(
193
+ i,
194
+ {
195
+ size: "sm",
196
+ icon: /* @__PURE__ */ e(f, {}),
197
+ "aria-label": "Next year",
198
+ onClick: () => {
199
+ d((t) => ({
200
+ ...t,
201
+ currYear: t.currYear + 1
202
+ }));
203
+ }
204
+ }
205
+ )
206
+ ] }),
207
+ /* @__PURE__ */ e(
208
+ C,
209
+ {
210
+ className: "mt-ds-05",
211
+ variant: "secondary",
212
+ fullWidth: !0,
213
+ onClick: A,
214
+ children: "Filter"
215
+ }
216
+ )
217
+ ] }) })
218
+ ]
219
+ }
220
+ )
221
+ ] })
222
+ ] });
223
+ }
224
+ );
225
+ S.displayName = "BreakAdminHeader";
226
+ export {
227
+ S as BreakAdminHeader
228
+ };
@@ -0,0 +1,18 @@
1
+ export { BreakAdmin } from './break-admin';
2
+ export type { BreakAdminProps } from './break-admin';
3
+ export { BreakAdminHeader } from './header';
4
+ export type { BreakAdminHeaderProps, BreakAdminFilters } from './header';
5
+ export { Breaks } from './breaks';
6
+ export type { BreaksProps } from './breaks';
7
+ export { LeaveRequest } from './leave-request';
8
+ export type { LeaveRequestProps } from './leave-request';
9
+ export { BreakBalance } from './break-balance';
10
+ export type { BreakBalanceProps } from './break-balance';
11
+ export { EditBreak } from './edit-break';
12
+ export type { EditBreakProps } from './edit-break';
13
+ export { EditBreakBalance } from './edit-break-balance';
14
+ export type { EditBreakBalanceProps } from './edit-break-balance';
15
+ export { DeleteBreak } from './delete-break';
16
+ export type { DeleteBreakProps } from './delete-break';
17
+ export { BreakAdminSkeleton } from './break-admin-skeleton';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/break/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { MouseEvent } from 'react';
2
+ import { BreakRequest } from '../types';
3
+ export interface LeaveRequestProps {
4
+ request: BreakRequest;
5
+ userImages: Record<string, string>;
6
+ handleRejectRequest: (event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>, id: string, comment?: string) => void;
7
+ handleApproveRequest: (event: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>, id: string, comment?: string) => void;
8
+ commentBoxOpen: boolean;
9
+ onCommentBoxClose: () => void;
10
+ clickedAction: 'approve' | 'reject' | null;
11
+ userId: string;
12
+ }
13
+ export declare function LeaveRequest({ request, userImages, handleRejectRequest, handleApproveRequest, commentBoxOpen, onCommentBoxClose, clickedAction, userId, }: LeaveRequestProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare namespace LeaveRequest {
15
+ var displayName: string;
16
+ }
17
+ //# sourceMappingURL=leave-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leave-request.d.ts","sourceRoot":"","sources":["../../../src/admin/break/leave-request.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,OAAO,CAAA;AAmBjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,mBAAmB,EAAE,CACnB,KAAK,EAAE,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,EAC3D,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAA;IACT,oBAAoB,EAAE,CACpB,KAAK,EAAE,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,EAC3D,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAA;IACT,cAAc,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,aAAa,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,MAAM,GACP,EAAE,iBAAiB,2CAqKnB;yBA9Ke,YAAY"}
@@ -0,0 +1,162 @@
1
+ import { jsxs as r, Fragment as h, jsx as e } from "react/jsx-runtime";
2
+ import { useState as S } from "react";
3
+ import { Dialog as L, DialogContent as O, DialogHeader as W, DialogTitle as Y, DialogDescription as B } from "@devalok/shilp-sutra/ui";
4
+ import { Textarea as H } from "@devalok/shilp-sutra/ui";
5
+ import { formatDateWithWeekday as p } from "../utils/date-utils.js";
6
+ import { Avatar as M, AvatarImage as R, AvatarFallback as V } from "@devalok/shilp-sutra/ui";
7
+ import { Button as x } from "@devalok/shilp-sutra/ui";
8
+ import { isSameDay as X } from "date-fns";
9
+ import { Tooltip as s, TooltipTrigger as n, TooltipContent as d } from "@devalok/shilp-sutra/ui";
10
+ import { IconX as G, IconCheck as J } from "@tabler/icons-react";
11
+ function K({
12
+ request: a,
13
+ userImages: z,
14
+ handleRejectRequest: f,
15
+ handleApproveRequest: b,
16
+ commentBoxOpen: A,
17
+ onCommentBoxClose: E,
18
+ clickedAction: o,
19
+ userId: l
20
+ }) {
21
+ var N, y, w, u, D, C, k, j, T;
22
+ const [c, g] = S(""), m = new Date(a.startDate), v = new Date(a.endDate), F = X(m, v);
23
+ return /* @__PURE__ */ r(h, { children: [
24
+ /* @__PURE__ */ r(
25
+ "div",
26
+ {
27
+ className: "flex justify-between border-b border-border px-ds-03 py-ds-04 last:border-b-0",
28
+ children: [
29
+ /* @__PURE__ */ r("div", { className: "flex w-full items-center gap-ds-04", children: [
30
+ /* @__PURE__ */ r(M, { className: "h-ds-md w-ds-md", children: [
31
+ /* @__PURE__ */ e(R, { src: z[((N = a.user) == null ? void 0 : N.id) || ""], alt: ((y = a.user) == null ? void 0 : y.name) || "" }),
32
+ /* @__PURE__ */ e(V, { children: (((w = a.user) == null ? void 0 : w.name) || "?")[0] })
33
+ ] }),
34
+ /* @__PURE__ */ r("div", { className: "flex w-auto max-w-[75%] flex-col items-start gap-ds-02b", children: [
35
+ /* @__PURE__ */ e("div", { className: "flex flex-row gap-ds-02b", children: /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-03", children: [
36
+ /* @__PURE__ */ e("p", { className: "text-ds-sm text-text-secondary", children: (u = a.user) == null ? void 0 : u.name }),
37
+ a.correction && /* @__PURE__ */ r(h, { children: [
38
+ /* @__PURE__ */ e("div", { className: "block h-3 w-[1px] bg-border-subtle" }),
39
+ " ",
40
+ /* @__PURE__ */ e("p", { className: "text-ds-sm text-interactive", children: "Attendance Corrections" }),
41
+ " "
42
+ ] })
43
+ ] }) }),
44
+ /* @__PURE__ */ e("div", { className: "flex w-full flex-wrap items-center gap-ds-04", children: F ? /* @__PURE__ */ r("div", { className: "flex w-full flex-wrap items-center gap-ds-03", children: [
45
+ /* @__PURE__ */ r(s, { children: [
46
+ /* @__PURE__ */ e(n, { asChild: !0, children: /* @__PURE__ */ e("p", { className: "text-ds-base font-semibold line-clamp-2 cursor-default text-text-primary", children: a.reason }) }),
47
+ /* @__PURE__ */ e(d, { children: a.reason })
48
+ ] }),
49
+ /* @__PURE__ */ r("p", { className: "text-ds-base text-text-tertiary", children: [
50
+ "• ",
51
+ p(m)
52
+ ] })
53
+ ] }) : /* @__PURE__ */ r(h, { children: [
54
+ /* @__PURE__ */ r(s, { children: [
55
+ /* @__PURE__ */ e(n, { asChild: !0, children: /* @__PURE__ */ e("p", { className: "text-ds-base font-semibold line-clamp-2 cursor-default text-text-primary", children: a.reason }) }),
56
+ /* @__PURE__ */ e(d, { children: a.reason })
57
+ ] }),
58
+ /* @__PURE__ */ r("p", { className: "text-ds-base text-text-tertiary", children: [
59
+ p(m),
60
+ " to",
61
+ " ",
62
+ p(v),
63
+ ",",
64
+ /* @__PURE__ */ r("span", { className: "text-interactive-hover", children: [
65
+ " ",
66
+ a.numberOfDays,
67
+ " days"
68
+ ] })
69
+ ] })
70
+ ] }) })
71
+ ] })
72
+ ] }),
73
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-04", children: [
74
+ /* @__PURE__ */ r(s, { delayDuration: 0, children: [
75
+ /* @__PURE__ */ e(n, { asChild: !0, children: /* @__PURE__ */ e(
76
+ x,
77
+ {
78
+ variant: "ghost",
79
+ size: "icon-sm",
80
+ onClick: (t) => {
81
+ var i;
82
+ return ((i = a.user) == null ? void 0 : i.id) !== l && f(t, a.id);
83
+ },
84
+ disabled: ((D = a.user) == null ? void 0 : D.id) === l,
85
+ "aria-label": "Reject break request",
86
+ children: /* @__PURE__ */ e(G, { className: "h-ico-lg w-ico-lg" })
87
+ }
88
+ ) }),
89
+ ((C = a.user) == null ? void 0 : C.id) === l && /* @__PURE__ */ e(d, { children: /* @__PURE__ */ e("p", { children: "You cannot approve/reject your own break request" }) })
90
+ ] }),
91
+ /* @__PURE__ */ r(s, { delayDuration: 0, children: [
92
+ /* @__PURE__ */ e(n, { asChild: !0, children: /* @__PURE__ */ e(
93
+ x,
94
+ {
95
+ variant: "ghost",
96
+ size: "icon-sm",
97
+ onClick: (t) => {
98
+ var i;
99
+ return ((i = a.user) == null ? void 0 : i.id) !== l && b(t, a.id);
100
+ },
101
+ disabled: ((k = a.user) == null ? void 0 : k.id) === l,
102
+ "aria-label": "Approve break request",
103
+ children: /* @__PURE__ */ e(J, { className: "h-ico-lg w-ico-lg" })
104
+ }
105
+ ) }),
106
+ ((j = a.user) == null ? void 0 : j.id) === l && /* @__PURE__ */ e(d, { children: /* @__PURE__ */ e("p", { children: "You cannot approve/reject your own break request" }) })
107
+ ] })
108
+ ] })
109
+ ]
110
+ },
111
+ a.id
112
+ ),
113
+ /* @__PURE__ */ e(
114
+ L,
115
+ {
116
+ open: A,
117
+ onOpenChange: () => {
118
+ E(), g("");
119
+ },
120
+ children: /* @__PURE__ */ r(O, { children: [
121
+ /* @__PURE__ */ r(W, { children: [
122
+ /* @__PURE__ */ e(Y, { className: "text-ds-xl", children: (T = a.user) == null ? void 0 : T.name }),
123
+ /* @__PURE__ */ e(B, { className: "text-ds-lg", children: a.reason })
124
+ ] }),
125
+ /* @__PURE__ */ r("div", { className: "flex flex-col", children: [
126
+ /* @__PURE__ */ r("div", { className: "text-ds-md flex flex-col items-start justify-center gap-ds-03 rounded-ds-lg border border-border-subtle bg-layer-01 shadow-01 px-ds-05 pb-ds-01 pt-ds-03 text-text-primary", children: [
127
+ /* @__PURE__ */ e("label", { className: "text-ds-xs font-semibold uppercase tracking-wider text-text-helper", htmlFor: "comment", children: "Comment" }),
128
+ /* @__PURE__ */ e(
129
+ H,
130
+ {
131
+ id: "comment",
132
+ defaultValue: c,
133
+ onChange: (t) => g(t.target.value),
134
+ placeholder: "Enjoy your break",
135
+ className: "resize-none border-none px-0 shadow-none placeholder:font-accent"
136
+ }
137
+ )
138
+ ] }),
139
+ /* @__PURE__ */ e(
140
+ x,
141
+ {
142
+ className: "mt-ds-06",
143
+ variant: "primary",
144
+ onClick: () => {
145
+ const t = new window.MouseEvent(
146
+ "click"
147
+ );
148
+ o === "approve" ? b(t, a.id, c) : o === "reject" && f(t, a.id, c);
149
+ },
150
+ children: o === "approve" ? "Approve" : "Reject"
151
+ }
152
+ )
153
+ ] })
154
+ ] })
155
+ }
156
+ )
157
+ ] });
158
+ }
159
+ K.displayName = "LeaveRequest";
160
+ export {
161
+ K as LeaveRequest
162
+ };
@@ -0,0 +1,25 @@
1
+ export interface BreakDatePickerState {
2
+ showCalendar: boolean;
3
+ activeDate: 'start' | 'end' | null;
4
+ currentMonth: number;
5
+ currentYear: number;
6
+ selectedStartDate: string | null;
7
+ selectedEndDate: string | null;
8
+ }
9
+ export declare function useBreakDatePicker(): {
10
+ showCalendar: boolean;
11
+ activeDate: "end" | "start" | null;
12
+ currentMonth: number;
13
+ currentYear: number;
14
+ selectedStartDate: string | null;
15
+ selectedEndDate: string | null;
16
+ setShowCalendar: import('react').Dispatch<import('react').SetStateAction<boolean>>;
17
+ setActiveDate: import('react').Dispatch<import('react').SetStateAction<"end" | "start" | null>>;
18
+ setCurrentMonth: import('react').Dispatch<import('react').SetStateAction<number>>;
19
+ setCurrentYear: import('react').Dispatch<import('react').SetStateAction<number>>;
20
+ setSelectedStartDate: import('react').Dispatch<import('react').SetStateAction<string | null>>;
21
+ setSelectedEndDate: import('react').Dispatch<import('react').SetStateAction<string | null>>;
22
+ navigateMonth: (direction: "prev" | "next") => void;
23
+ resetDates: () => void;
24
+ };
25
+ //# sourceMappingURL=use-break-date-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-break-date-picker.d.ts","sourceRoot":"","sources":["../../../src/admin/break/use-break-date-picker.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAA;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAMD,wBAAgB,kBAAkB;;;;;;;;;;;;;+BAelB,MAAM,GAAG,MAAM;;EAmD9B"}
@@ -0,0 +1,42 @@
1
+ import { useState as t, useCallback as w } from "react";
2
+ function m() {
3
+ const [i, u] = t(!1), [M, D] = t(null), [s, a] = t((/* @__PURE__ */ new Date()).getMonth()), [o, c] = t((/* @__PURE__ */ new Date()).getFullYear()), [S, d] = t(
4
+ null
5
+ ), [f, h] = t(null), C = w(
6
+ (g) => {
7
+ const e = s, n = o;
8
+ if (g === "next") {
9
+ const l = e === 11 ? 0 : e + 1, r = e === 11 ? n + 1 : n;
10
+ a(l), c(r);
11
+ } else {
12
+ const l = e === 0 ? 11 : e - 1, r = e === 0 ? n - 1 : n;
13
+ a(l), c(r);
14
+ }
15
+ },
16
+ [s, o]
17
+ ), Y = w(() => {
18
+ u(!1), D(null), d(null), h(null);
19
+ }, []);
20
+ return {
21
+ // State
22
+ showCalendar: i,
23
+ activeDate: M,
24
+ currentMonth: s,
25
+ currentYear: o,
26
+ selectedStartDate: S,
27
+ selectedEndDate: f,
28
+ // Setters (for cases needing direct access)
29
+ setShowCalendar: u,
30
+ setActiveDate: D,
31
+ setCurrentMonth: a,
32
+ setCurrentYear: c,
33
+ setSelectedStartDate: d,
34
+ setSelectedEndDate: h,
35
+ // Helpers
36
+ navigateMonth: C,
37
+ resetDates: Y
38
+ };
39
+ }
40
+ export {
41
+ m as useBreakDatePicker
42
+ };
@@ -0,0 +1,109 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { DateAttendanceInfo } from './render-date';
3
+ import { TaskItem } from './associate-detail';
4
+ import { AttendanceCorrection } from './correction-list';
5
+ import { AdminUser, AttendanceRecord, BreakRequest, GroupedAttendance, UserRole } from '../types';
6
+ export type { TaskItem } from './associate-detail';
7
+ export type { AttendanceCorrection } from './correction-list';
8
+ export interface AdminDashboardRootProps {
9
+ /** Current authenticated user's ID */
10
+ currentUserId: string;
11
+ /** Current user's role */
12
+ currentUserRole: UserRole;
13
+ /** Current authenticated user object */
14
+ currentUser?: AdminUser;
15
+ /** Base URL for static assets (e.g. break-background.svg) */
16
+ assetsBaseUrl?: string;
17
+ /** Map of userId -> image URL */
18
+ userImages?: Record<string, string>;
19
+ /** Whether data is still loading */
20
+ isLoading?: boolean;
21
+ /** Called when the selected associate changes */
22
+ onAssociateChange?: (user: AdminUser | null) => void;
23
+ /** Children (compound sub-components) */
24
+ children: ReactNode;
25
+ }
26
+ export interface AdminDashboardCalendarProps {
27
+ /** Map of date string (YYYY-MM-DD) -> attendance info */
28
+ dateAttendanceMap?: Map<string, DateAttendanceInfo> | null;
29
+ /** Called when the selected date changes */
30
+ onDateChange?: (date: string) => void;
31
+ /** Called when time frame changes */
32
+ onTimeFrameChange?: (timeFrame: string) => void;
33
+ /** Full list of users (for the associate dropdown in header) */
34
+ users?: AdminUser[];
35
+ /** Attendance record for selected user (used for break-bg styling) */
36
+ selectedUserAttendance?: AttendanceRecord | null;
37
+ }
38
+ export interface AdminDashboardAttendanceOverviewProps {
39
+ /** Grouped attendance data for the selected date */
40
+ groupedAttendance?: GroupedAttendance | null;
41
+ /** Full list of users */
42
+ users?: AdminUser[];
43
+ }
44
+ export interface AdminDashboardAssociateDetailProps {
45
+ /** Attendance record for the selected associate + date */
46
+ attendance?: AttendanceRecord | null;
47
+ /** Tasks for the selected associate */
48
+ tasks?: TaskItem[];
49
+ /** Break request for the selected associate's selected date */
50
+ breakRequest?: BreakRequest | null;
51
+ /** Called to update attendance status (mark present/absent) */
52
+ onUpdateAttendanceStatus?: (params: {
53
+ userId: string;
54
+ date: string;
55
+ isPresent: boolean;
56
+ }) => void | Promise<void>;
57
+ /** Called to toggle a task's status */
58
+ onToggleTaskStatus?: (taskId: string, newStatus: string) => void | Promise<void>;
59
+ /** Called to create a new task */
60
+ onAddTask?: (title: string, assigneeId: string) => void | Promise<void>;
61
+ /** Called to reorder tasks via drag-and-drop */
62
+ onReorderTasks?: (draggedTaskId: string, targetTaskId: string) => void | Promise<void>;
63
+ /** Called to cancel a break */
64
+ onCancelBreak?: (params: {
65
+ requestId: string;
66
+ deleteSingleDay: boolean;
67
+ dateToCancel: string | Date;
68
+ userId: string;
69
+ }) => void | Promise<void>;
70
+ /** Called when selected user attendance needs refresh */
71
+ onRefreshSelectedUserAttendance?: () => void | Promise<void>;
72
+ /** Called when attendance data refresh is needed (after batch ops) */
73
+ onRefreshAttendanceData?: () => void | Promise<void>;
74
+ }
75
+ export interface AdminDashboardLeaveRequestsProps {
76
+ /** Pending break/leave requests */
77
+ requests?: BreakRequest[];
78
+ /** Pending attendance corrections */
79
+ corrections?: AttendanceCorrection[];
80
+ /** Called to approve a break request */
81
+ onApproveBreak?: (params: {
82
+ requestId: string;
83
+ adminComment: string;
84
+ userId: string;
85
+ }) => void | Promise<void>;
86
+ /** Called to reject a break request */
87
+ onRejectBreak?: (params: {
88
+ requestId: string;
89
+ adminComment: string;
90
+ userId: string;
91
+ }) => void | Promise<void>;
92
+ /** Called to approve an attendance correction */
93
+ onApproveCorrection?: (correctionId: string) => void | Promise<void>;
94
+ /** Called to reject an attendance correction */
95
+ onRejectCorrection?: (correctionId: string) => void | Promise<void>;
96
+ }
97
+ export interface AdminDashboardContentProps {
98
+ /** Children (AttendanceOverview, AssociateDetail, LeaveRequests) */
99
+ children: ReactNode;
100
+ }
101
+ export declare const AdminDashboard: React.ForwardRefExoticComponent<AdminDashboardRootProps & React.RefAttributes<HTMLDivElement>> & {
102
+ Root: React.ForwardRefExoticComponent<AdminDashboardRootProps & React.RefAttributes<HTMLDivElement>>;
103
+ Calendar: React.ForwardRefExoticComponent<AdminDashboardCalendarProps & React.RefAttributes<HTMLDivElement>>;
104
+ AttendanceOverview: React.ForwardRefExoticComponent<AdminDashboardAttendanceOverviewProps & React.RefAttributes<HTMLDivElement>>;
105
+ AssociateDetail: React.ForwardRefExoticComponent<AdminDashboardAssociateDetailProps & React.RefAttributes<HTMLDivElement>>;
106
+ LeaveRequests: React.ForwardRefExoticComponent<AdminDashboardLeaveRequestsProps & React.RefAttributes<HTMLDivElement>>;
107
+ Content: React.ForwardRefExoticComponent<AdminDashboardContentProps & React.RefAttributes<HTMLDivElement>>;
108
+ };
109
+ //# sourceMappingURL=admin-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-dashboard.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/admin-dashboard.tsx"],"names":[],"mappings":"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"}