@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,143 @@
1
+ import { jsx as R, jsxs as H } from "react/jsx-runtime";
2
+ import * as J from "react";
3
+ import { useState as Q, useEffect as V } from "react";
4
+ import { cn as j } from "@devalok/shilp-sutra/ui";
5
+ import { isSameDay as X, getStartOfDay as O } from "../utils/date-utils.js";
6
+ import { format as d } from "date-fns";
7
+ const Y = J.forwardRef(
8
+ function({
9
+ day: i,
10
+ isAdmin: C,
11
+ dateAttendanceMap: s,
12
+ selectedDate: k,
13
+ activeTimeFrame: D
14
+ }, K) {
15
+ const [e, l] = Q({
16
+ today: i.isToday,
17
+ isPresent: null,
18
+ isDefault: null,
19
+ isBreak: null,
20
+ isAbsent: null,
21
+ breakStart: null,
22
+ breakMid: null,
23
+ breakEnd: null,
24
+ disabled: null,
25
+ disabledState: !1,
26
+ hover: !1,
27
+ focus: !1,
28
+ pressed: !1,
29
+ selected: i.isActive
30
+ }), T = (r) => {
31
+ const o = /* @__PURE__ */ new Date();
32
+ return O(r) < O(o);
33
+ }, F = (r) => {
34
+ const o = d(r, "yyyy-MM-dd"), t = s == null ? void 0 : s.get(o);
35
+ return (t == null ? void 0 : t.status) === "BREAK";
36
+ }, W = (r) => {
37
+ const o = d(r, "yyyy-MM-dd"), t = s == null ? void 0 : s.get(o);
38
+ return T(r) && t && !t.hasCorrectionOrApproval && (t == null ? void 0 : t.status) === "ABSENT";
39
+ }, L = (r) => {
40
+ const o = d(r, "yyyy-MM-dd"), t = s == null ? void 0 : s.get(o);
41
+ return (t == null ? void 0 : t.status) === "PRESENT";
42
+ };
43
+ V(() => {
44
+ var h, S, w, E;
45
+ const r = L(i.fullDate) ?? !1, o = F(i.fullDate) ?? !1, t = W(i.fullDate) ?? !1, B = i.isDisabled || !1, z = !i.isToday && !o && !t && !B;
46
+ let x = !1, y = !1, c = !1;
47
+ if (o) {
48
+ const a = new Date(i.fullDate);
49
+ a.setDate(a.getDate() - 1);
50
+ const P = d(a, "yyyy-MM-dd"), g = new Date(i.fullDate);
51
+ g.setDate(g.getDate() + 1);
52
+ const N = d(g, "yyyy-MM-dd"), b = ((h = s == null ? void 0 : s.get(P)) == null ? void 0 : h.status) === "BREAK" && ((S = s == null ? void 0 : s.get(P)) == null ? void 0 : S.isBreakApproved), u = ((w = s == null ? void 0 : s.get(N)) == null ? void 0 : w.status) === "BREAK" && ((E = s == null ? void 0 : s.get(N)) == null ? void 0 : E.isBreakApproved);
53
+ x = o && !b && !!u, y = o && !!b && !!u, c = o && !!b && !u, o && !b && !u && (x = !0, c = !0, y = !1);
54
+ }
55
+ const G = X(new Date(k), i.fullDate);
56
+ l((a) => ({
57
+ ...a,
58
+ isPresent: r,
59
+ isBreak: o,
60
+ isAbsent: t,
61
+ disabled: B,
62
+ isDefault: z,
63
+ breakStart: x,
64
+ breakMid: y,
65
+ breakEnd: c,
66
+ selected: G
67
+ }));
68
+ }, [i, s, k, C]);
69
+ const f = e.isBreak && D !== "weekly", m = f && e.breakStart && !e.breakEnd, v = f && e.breakEnd && !e.breakStart, n = f && e.breakMid, U = j(
70
+ "flex w-full items-center justify-center p-ds-02",
71
+ m && "rounded-l-ds-2xl",
72
+ v && "rounded-r-ds-2xl",
73
+ n && "bg-interactive-subtle"
74
+ ), q = j(
75
+ // Base layout & transitions
76
+ "flex h-ds-md w-ds-md items-center justify-center rounded-ds-full text-ds-base relative overflow-hidden",
77
+ "transition-[background-color,color,border] duration-200",
78
+ "outline-border-strong outline-solid outline-0",
79
+ // Cursor
80
+ e.disabled ? "cursor-default" : "cursor-pointer",
81
+ // ── Base states (mutually exclusive in original if/else) ──
82
+ // Disabled
83
+ e.disabled && "bg-transparent text-text-disabled",
84
+ // Today (not break, not disabled)
85
+ !e.disabled && e.today && !e.isBreak && "bg-interactive text-text-on-color ring-2 ring-inset ring-interactive",
86
+ // Break (not disabled, not today-only)
87
+ !e.disabled && e.isBreak && !n && "bg-interactive-selected text-text-secondary ring-2 ring-inset ring-interactive",
88
+ // Break mid in non-weekly view overrides break base
89
+ !e.disabled && e.isBreak && n && "rounded-ds-none bg-interactive-subtle text-text-secondary shadow-none",
90
+ // Break border-radius overrides for non-weekly
91
+ !e.disabled && e.isBreak && m && "rounded-l-ds-2xl rounded-r-none",
92
+ !e.disabled && e.isBreak && v && "rounded-l-none rounded-r-ds-2xl",
93
+ // Absent (not disabled, not today, not break)
94
+ !e.disabled && !e.today && !e.isBreak && e.isAbsent && "bg-transparent text-error",
95
+ // Present (not disabled, not today, not break, not absent)
96
+ !e.disabled && !e.today && !e.isBreak && !e.isAbsent && e.isPresent && "bg-transparent text-text-primary",
97
+ // Default (not disabled, not today, not break, not absent, not present)
98
+ !e.disabled && e.isDefault && "bg-transparent text-text-secondary",
99
+ // ── Hover overrides ──
100
+ // Hover on today (not break)
101
+ e.hover && !e.disabled && e.today && !e.isBreak && "bg-interactive text-text-on-color ring-2 ring-inset ring-interactive",
102
+ // Hover on present (not today, not break)
103
+ e.hover && !e.disabled && !e.today && !e.isBreak && e.isPresent && "bg-field text-text-primary",
104
+ // Hover on default (not today, not break, not present)
105
+ e.hover && !e.disabled && !e.today && !e.isBreak && !e.isPresent && e.isDefault && "bg-field text-text-secondary",
106
+ // Hover on break (same visual as base break, but re-assert to match original)
107
+ e.hover && !e.disabled && e.isBreak && !n && "bg-interactive-selected text-text-secondary ring-2 ring-inset ring-interactive",
108
+ e.hover && !e.disabled && e.isBreak && n && "rounded-ds-none bg-interactive-subtle text-text-secondary shadow-none",
109
+ // Hover on absent (not today, not break)
110
+ e.hover && !e.disabled && !e.today && !e.isBreak && e.isAbsent && "bg-field text-error",
111
+ // ── Focus ──
112
+ e.focus && !e.pressed && "outline-2",
113
+ // ── Pressed ──
114
+ e.pressed && (e.isPresent || e.isAbsent || e.isDefault || e.disabled) && "bg-error-surface",
115
+ // ── Selected ──
116
+ e.selected && "font-semibold",
117
+ e.selected && D === "monthly" && "text-text-primary",
118
+ // ── DisabledState (visual-only disabled, different from functional disabled) ──
119
+ e.disabledState && "text-text-disabled",
120
+ e.disabledState && e.today && "bg-text-disabled text-text-on-color"
121
+ );
122
+ return /* @__PURE__ */ R("div", { ref: K, className: U, children: /* @__PURE__ */ H(
123
+ "div",
124
+ {
125
+ className: q,
126
+ onMouseEnter: () => l((r) => ({ ...r, hover: !0 })),
127
+ onMouseLeave: () => l((r) => ({ ...r, hover: !1 })),
128
+ onFocus: () => l((r) => ({ ...r, focus: !0 })),
129
+ onBlur: () => l((r) => ({ ...r, focus: !1 })),
130
+ onMouseDown: () => l((r) => ({ ...r, pressed: !0 })),
131
+ onMouseUp: () => l((r) => ({ ...r, pressed: !1 })),
132
+ children: [
133
+ i.date,
134
+ e.isAbsent && /* @__PURE__ */ R("span", { className: "absolute bottom-0 left-1/2 h-ds-02b w-ds-02b -translate-x-1/2 rounded-ds-full bg-error" })
135
+ ]
136
+ }
137
+ ) });
138
+ }
139
+ );
140
+ Y.displayName = "RenderDate";
141
+ export {
142
+ Y as RenderDate
143
+ };
@@ -0,0 +1,60 @@
1
+ import { DayInfo } from '../types';
2
+ export interface CalendarNavigationState {
3
+ currentDate: string;
4
+ selectedDate: string;
5
+ isFutureDate: boolean;
6
+ activeTimeFrame: string;
7
+ days: DayInfo[];
8
+ selectedMonth: string;
9
+ activeIndex: number;
10
+ dateOffset: number;
11
+ }
12
+ type CalendarAction = {
13
+ type: 'SET_TIME_FRAME';
14
+ payload: string;
15
+ } | {
16
+ type: 'SELECT_DATE';
17
+ payload: {
18
+ index: number;
19
+ date: Date;
20
+ };
21
+ } | {
22
+ type: 'NAVIGATE_DATE';
23
+ payload: 'prev' | 'next';
24
+ } | {
25
+ type: 'SELECT_MONTH';
26
+ payload: string;
27
+ } | {
28
+ type: 'GO_TODAY';
29
+ } | {
30
+ type: 'UPDATE_DAYS';
31
+ } | {
32
+ type: 'SELECT_DAY_MONTHLY';
33
+ payload: {
34
+ date: Date;
35
+ };
36
+ };
37
+ export declare function useCalendarNavigation(): {
38
+ dispatch: import('react').Dispatch<CalendarAction>;
39
+ setActiveTimeFrame: (timeFrame: string) => void;
40
+ selectDate: (index: number, date: Date) => void;
41
+ selectDayMonthly: (date: Date) => void;
42
+ navigateDate: (direction: "prev" | "next") => void;
43
+ selectMonth: (monthYear: string) => void;
44
+ goToday: () => void;
45
+ updateDays: () => void;
46
+ isTodaySelected: () => boolean;
47
+ getYearsList: () => string[];
48
+ isFirstDate: () => boolean;
49
+ isLastDate: () => boolean;
50
+ currentDate: string;
51
+ selectedDate: string;
52
+ isFutureDate: boolean;
53
+ activeTimeFrame: string;
54
+ days: DayInfo[];
55
+ selectedMonth: string;
56
+ activeIndex: number;
57
+ dateOffset: number;
58
+ };
59
+ export type { CalendarAction };
60
+ //# sourceMappingURL=use-calendar-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-calendar-navigation.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/use-calendar-navigation.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAMvC,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,cAAc,GACf;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IACE,IAAI,EAAE,oBAAoB,CAAA;IAC1B,OAAO,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;CACxB,CAAA;AA4LL,wBAAgB,qBAAqB;;oCAOgB,MAAM;wBAIlB,MAAM,QAAQ,IAAI;6BAIb,IAAI;8BAIH,MAAM,GAAG,MAAM;6BAIhB,MAAM;;;2BAgBV,OAAO;wBAIV,MAAM,EAAE;uBAYT,OAAO;sBAQR,OAAO;iBA/Q7B,MAAM;kBACL,MAAM;kBACN,OAAO;qBACJ,MAAM;UACjB,OAAO,EAAE;mBACA,MAAM;iBACR,MAAM;gBACP,MAAM;EAsSnB;AAED,YAAY,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,168 @@
1
+ import { useReducer as v, useCallback as D } from "react";
2
+ import { format as f } from "date-fns";
3
+ import { isSameDay as T, getStartOfDay as M, getWeekDays as p, getMonthDays as _ } from "../utils/date-utils.js";
4
+ const y = (e) => f(e, "yyyy-MM-dd'T'HH:mm:ssxxx"), l = (e, a, s) => e === "weekly" ? p(a, s) : _(a, s), i = (e) => `${f(e, "MMMM")} ${f(e, "yyyy")}`;
5
+ function I(e, a) {
6
+ const s = /* @__PURE__ */ new Date();
7
+ switch (a.type) {
8
+ case "SET_TIME_FRAME": {
9
+ const t = l(
10
+ a.payload,
11
+ e.currentDate,
12
+ e.selectedDate
13
+ );
14
+ return {
15
+ ...e,
16
+ activeTimeFrame: a.payload,
17
+ days: t
18
+ };
19
+ }
20
+ case "SELECT_DATE": {
21
+ const { index: t, date: n } = a.payload, o = y(n), c = M(n) > M(s), r = i(n);
22
+ return {
23
+ ...e,
24
+ activeIndex: t,
25
+ selectedDate: o,
26
+ isFutureDate: c,
27
+ selectedMonth: r
28
+ };
29
+ }
30
+ case "SELECT_DAY_MONTHLY": {
31
+ const { date: t } = a.payload, n = y(t), o = M(t) > M(s), c = i(t), r = l(
32
+ e.activeTimeFrame,
33
+ e.currentDate,
34
+ n
35
+ );
36
+ return {
37
+ ...e,
38
+ selectedDate: n,
39
+ isFutureDate: o,
40
+ selectedMonth: c,
41
+ days: r
42
+ };
43
+ }
44
+ case "NAVIGATE_DATE": {
45
+ const t = new Date(e.currentDate);
46
+ if (e.activeTimeFrame === "weekly") {
47
+ const r = a.payload === "prev" ? -7 : 7;
48
+ t.setDate(t.getDate() + r);
49
+ } else {
50
+ const r = a.payload === "prev" ? -1 : 1;
51
+ t.setMonth(t.getMonth() + r), t.setDate(1);
52
+ }
53
+ const n = y(t), o = i(t), c = l(e.activeTimeFrame, n, n);
54
+ return {
55
+ ...e,
56
+ currentDate: n,
57
+ selectedDate: n,
58
+ dateOffset: e.dateOffset + (a.payload === "prev" ? -1 : 1),
59
+ selectedMonth: o,
60
+ days: c
61
+ };
62
+ }
63
+ case "SELECT_MONTH": {
64
+ const [t, n] = a.payload.split(" "), o = new Date(e.selectedDate);
65
+ o.setMonth((/* @__PURE__ */ new Date(`${t} 1, 2024`)).getMonth()), o.setFullYear(parseInt(n));
66
+ const c = y(o), r = Math.floor(
67
+ (o.getTime() - s.getTime()) / (7 * 24 * 60 * 60 * 1e3)
68
+ ), u = l(e.activeTimeFrame, c, c);
69
+ return {
70
+ ...e,
71
+ currentDate: c,
72
+ selectedDate: c,
73
+ selectedMonth: a.payload,
74
+ dateOffset: r,
75
+ days: u
76
+ };
77
+ }
78
+ case "GO_TODAY": {
79
+ const t = y(s), n = i(s), o = Math.floor(
80
+ (s.getTime() - (/* @__PURE__ */ new Date()).getTime()) / (7 * 24 * 60 * 60 * 1e3)
81
+ ), c = l(e.activeTimeFrame, t, t), r = c.findIndex(
82
+ (u) => T(u.fullDate, s)
83
+ );
84
+ return {
85
+ ...e,
86
+ currentDate: t,
87
+ selectedDate: t,
88
+ selectedMonth: n,
89
+ dateOffset: o,
90
+ isFutureDate: !1,
91
+ days: c,
92
+ activeIndex: r !== -1 ? r : e.activeIndex
93
+ };
94
+ }
95
+ case "UPDATE_DAYS": {
96
+ const t = l(
97
+ e.activeTimeFrame,
98
+ e.currentDate,
99
+ e.selectedDate
100
+ );
101
+ return { ...e, days: t };
102
+ }
103
+ default:
104
+ return e;
105
+ }
106
+ }
107
+ function O() {
108
+ const e = /* @__PURE__ */ new Date(), a = y(e), s = p(a, a), t = s.findIndex(
109
+ (n) => T(n.fullDate, e)
110
+ );
111
+ return {
112
+ currentDate: a,
113
+ selectedDate: a,
114
+ isFutureDate: !1,
115
+ activeTimeFrame: "weekly",
116
+ days: s,
117
+ selectedMonth: i(e),
118
+ activeIndex: t !== -1 ? t : 0,
119
+ dateOffset: 0
120
+ };
121
+ }
122
+ function C() {
123
+ const [e, a] = v(I, null, O), s = D((d) => {
124
+ a({ type: "SET_TIME_FRAME", payload: d });
125
+ }, []), t = D((d, m) => {
126
+ a({ type: "SELECT_DATE", payload: { index: d, date: m } });
127
+ }, []), n = D((d) => {
128
+ a({ type: "SELECT_DAY_MONTHLY", payload: { date: d } });
129
+ }, []), o = D((d) => {
130
+ a({ type: "NAVIGATE_DATE", payload: d });
131
+ }, []), c = D((d) => {
132
+ a({ type: "SELECT_MONTH", payload: d });
133
+ }, []), r = D(() => {
134
+ a({ type: "GO_TODAY" });
135
+ }, []), u = D(() => {
136
+ a({ type: "UPDATE_DAYS" });
137
+ }, []), h = D(() => T(new Date(e.selectedDate), /* @__PURE__ */ new Date()), [e.selectedDate]), E = D(() => {
138
+ const d = [], m = (/* @__PURE__ */ new Date()).getFullYear(), F = f(new Date(e.selectedDate), "MMMM");
139
+ for (let w = -2; w < 1; w++) {
140
+ const g = new Date(m + w, 0);
141
+ d.push(`${F} ${g.getFullYear()}`);
142
+ }
143
+ return d;
144
+ }, [e.selectedDate]), S = D(() => e.days.length > 0 && !!e.days[0].fullDate && T(e.days[0].fullDate, new Date(e.selectedDate)), [e.days, e.selectedDate]), A = D(() => e.days.length > 0 && !!e.days[e.days.length - 1].fullDate && T(
145
+ e.days[e.days.length - 1].fullDate,
146
+ new Date(e.selectedDate)
147
+ ), [e.days, e.selectedDate]);
148
+ return {
149
+ ...e,
150
+ dispatch: a,
151
+ // Action creators
152
+ setActiveTimeFrame: s,
153
+ selectDate: t,
154
+ selectDayMonthly: n,
155
+ navigateDate: o,
156
+ selectMonth: c,
157
+ goToday: r,
158
+ updateDays: u,
159
+ // Computed
160
+ isTodaySelected: h,
161
+ getYearsList: E,
162
+ isFirstDate: S,
163
+ isLastDate: A
164
+ };
165
+ }
166
+ export {
167
+ C as useCalendarNavigation
168
+ };
@@ -0,0 +1,21 @@
1
+ import { BreakRequest } from '../types';
2
+ export declare function useLeaveRequestInteraction(): {
3
+ isProcessing: boolean;
4
+ activeRequest: BreakRequest | null;
5
+ activeAction: string | null;
6
+ message: string;
7
+ openComment: boolean;
8
+ hoveredRequest: BreakRequest | null;
9
+ isCtrlPressed: boolean;
10
+ hoverActionTemp: string | null;
11
+ setIsProcessing: import('react').Dispatch<import('react').SetStateAction<boolean>>;
12
+ setActiveRequest: import('react').Dispatch<import('react').SetStateAction<BreakRequest | null>>;
13
+ setActiveAction: import('react').Dispatch<import('react').SetStateAction<string | null>>;
14
+ setMessage: import('react').Dispatch<import('react').SetStateAction<string>>;
15
+ setOpenComment: import('react').Dispatch<import('react').SetStateAction<boolean>>;
16
+ setHoveredRequest: import('react').Dispatch<import('react').SetStateAction<BreakRequest | null>>;
17
+ setIsCtrlPressed: import('react').Dispatch<import('react').SetStateAction<boolean>>;
18
+ setHoverActionTemp: import('react').Dispatch<import('react').SetStateAction<string | null>>;
19
+ reset: () => void;
20
+ };
21
+ //# sourceMappingURL=use-leave-request-interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-leave-request-interaction.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/use-leave-request-interaction.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,wBAAgB,0BAA0B;;;;;;;;;;;;;;;;;;EAmDzC"}
@@ -0,0 +1,33 @@
1
+ import { useState as e, useCallback as R } from "react";
2
+ function g() {
3
+ const [a, s] = e(!1), [i, t] = e(null), [m, n] = e(null), [v, o] = e(""), [f, l] = e(!1), [p, c] = e(
4
+ null
5
+ ), [A, u] = e(!1), [q, r] = e(null), C = R(() => {
6
+ s(!1), t(null), n(null), o(""), l(!1), c(null), u(!1), r(null);
7
+ }, []);
8
+ return {
9
+ // State
10
+ isProcessing: a,
11
+ activeRequest: i,
12
+ activeAction: m,
13
+ message: v,
14
+ openComment: f,
15
+ hoveredRequest: p,
16
+ isCtrlPressed: A,
17
+ hoverActionTemp: q,
18
+ // Setters
19
+ setIsProcessing: s,
20
+ setActiveRequest: t,
21
+ setActiveAction: n,
22
+ setMessage: o,
23
+ setOpenComment: l,
24
+ setHoveredRequest: c,
25
+ setIsCtrlPressed: u,
26
+ setHoverActionTemp: r,
27
+ // Helpers
28
+ reset: C
29
+ };
30
+ }
31
+ export {
32
+ g as useLeaveRequestInteraction
33
+ };
@@ -0,0 +1,2 @@
1
+ export { IconPlus as AddIcon, IconChevronDown as ArrowDownIcon, IconChevronDown as ArrowDropdownIcon, IconChevronDown as FilledArrowIcon, IconChevronRight as ArrowForwardIcon, IconChevronLeft as ArrowLeftIcon, IconArrowRight as ArrowRightIcon, IconChevronUp as ArrowUpIcon, IconTrash as BreakDeleteIcon, IconCalendar as CalendarIcon, IconCalendarEvent as CalendarDateIcon, IconSquare as CheckboxIcon, IconSquareCheck as CheckboxActiveIcon, IconX as CloseIcon, IconX as CrossIcon, IconGripVertical as DragIcon, IconGripVertical as DragActiveIcon, IconPencil as EditIcon, IconDotsVertical as MenuDotsIcon, IconUser as PersonIcon, IconSend as SendIcon, IconCheck as TickIcon, } from '@tabler/icons-react';
2
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/admin/icons.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,QAAQ,IAAI,OAAO,EACnB,eAAe,IAAI,aAAa,EAChC,eAAe,IAAI,iBAAiB,EACpC,eAAe,IAAI,eAAe,EAClC,gBAAgB,IAAI,gBAAgB,EACpC,eAAe,IAAI,aAAa,EAChC,cAAc,IAAI,cAAc,EAChC,aAAa,IAAI,WAAW,EAC5B,SAAS,IAAI,eAAe,EAC5B,YAAY,IAAI,YAAY,EAC5B,iBAAiB,IAAI,gBAAgB,EACrC,UAAU,IAAI,YAAY,EAC1B,eAAe,IAAI,kBAAkB,EACrC,KAAK,IAAI,SAAS,EAClB,KAAK,IAAI,SAAS,EAClB,gBAAgB,IAAI,QAAQ,EAC5B,gBAAgB,IAAI,cAAc,EAClC,UAAU,IAAI,QAAQ,EACtB,gBAAgB,IAAI,YAAY,EAChC,QAAQ,IAAI,UAAU,EACtB,QAAQ,IAAI,QAAQ,EACpB,SAAS,IAAI,QAAQ,GACtB,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,9 @@
1
+ export type { UserRole, AttendanceStatus, CorrectionStatus, BreakRequestStatus, AdminUser, AttendanceRecord, BreakRequest, BreakBalanceData, Adjustment, GroupedAttendance, DayInfo, RealtimeCallbacks, } from './types';
2
+ export { AdminDashboard, type AdminDashboardRootProps, type AdminDashboardCalendarProps, type AdminDashboardAttendanceOverviewProps, type AdminDashboardAssociateDetailProps, type AdminDashboardLeaveRequestsProps, type AdminDashboardContentProps, type TaskItem, type AttendanceCorrection, Calendar, type CalendarProps, BreakRequestCard, type BreakRequestProps, LeaveRequests, type LeaveRequestsProps, DashboardSkeleton as AdminDashboardSkeleton, RenderDate, type RenderDateProps, type DateAttendanceInfo, DashboardHeader, type DashboardHeaderProps, AttendanceOverview, type AttendanceOverviewProps, AssociateDetail, type AssociateDetailProps, CorrectionList, type CorrectionListProps, } from './dashboard';
3
+ export { BreakAdmin, type BreakAdminProps, BreakAdminHeader, type BreakAdminHeaderProps, type BreakAdminFilters, Breaks, type BreaksProps, LeaveRequest, type LeaveRequestProps, BreakBalance, type BreakBalanceProps, EditBreak, type EditBreakProps, EditBreakBalance, type EditBreakBalanceProps, DeleteBreak, type DeleteBreakProps, BreakAdminSkeleton, } from './break';
4
+ export { ApprovedAdjustments, type ApprovedAdjustmentsProps, } from './adjustments';
5
+ export { AdjustmentType, default as renderAdjustmentType } from './utils/render-adjustment-type';
6
+ export { renderStatus } from './utils/render-status';
7
+ export { formatDate, formatDateIST, formatTimeIST, formatDateWithWeekday, formatOptionalDate, getDaySuffix, isSameDay, getWeekDays, getMonthDays, getStartOfDay, getEndOfDay, } from './utils/date-utils';
8
+ export { removeAllEmojis, removeEmojiAtStart } from './utils/emoji-utils';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,qCAAqC,EAC1C,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,QAAQ,EACb,KAAK,oBAAoB,EACzB,QAAQ,EACR,KAAK,aAAa,EAClB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,aAAa,EACb,KAAK,kBAAkB,EACvB,iBAAiB,IAAI,sBAAsB,EAC3C,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,eAAe,EACf,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,eAAe,EACf,KAAK,oBAAoB,EACzB,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,MAAM,EACN,KAAK,WAAW,EAChB,YAAY,EACZ,KAAK,iBAAiB,EACtB,YAAY,EACZ,KAAK,iBAAiB,EACtB,SAAS,EACT,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,WAAW,EACX,KAAK,gBAAgB,EACrB,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,62 @@
1
+ import { AdjustmentType as t, default as o } from "./utils/render-adjustment-type.js";
2
+ import { renderStatus as m } from "./utils/render-status.js";
3
+ import { formatDate as p, formatDateIST as d, formatDateWithWeekday as x, formatOptionalDate as n, formatTimeIST as s, getDaySuffix as i, getEndOfDay as D, getMonthDays as k, getStartOfDay as A, getWeekDays as l, isSameDay as B } from "./utils/date-utils.js";
4
+ import { removeAllEmojis as u, removeEmojiAtStart as y } from "./utils/emoji-utils.js";
5
+ import { AdminDashboard as h } from "./dashboard/admin-dashboard.js";
6
+ import { DashboardSkeleton as g } from "./dashboard/dashboard-skeleton.js";
7
+ import { ApprovedAdjustments as E } from "./adjustments/approved-adjustments.js";
8
+ import { AssociateDetail as b } from "./dashboard/associate-detail.js";
9
+ import { AttendanceOverview as R } from "./dashboard/attendance-overview.js";
10
+ import { BreakAdmin as C } from "./break/break-admin.js";
11
+ import { BreakAdminHeader as W } from "./break/header.js";
12
+ import { BreakAdminSkeleton as I } from "./break/break-admin-skeleton.js";
13
+ import { BreakBalance as M } from "./break/break-balance.js";
14
+ import { BreakRequestCard as F } from "./dashboard/break-request.js";
15
+ import { Breaks as J } from "./break/breaks.js";
16
+ import { Calendar as N } from "./dashboard/calendar.js";
17
+ import { CorrectionList as Q } from "./dashboard/correction-list.js";
18
+ import { DashboardHeader as V } from "./dashboard/dashboard-header.js";
19
+ import { DeleteBreak as Y } from "./break/delete-break.js";
20
+ import { EditBreak as _ } from "./break/edit-break.js";
21
+ import { EditBreakBalance as ee } from "./break/edit-break-balance.js";
22
+ import { LeaveRequest as te } from "./break/leave-request.js";
23
+ import { LeaveRequests as ae } from "./dashboard/leave-requests.js";
24
+ import { RenderDate as fe } from "./dashboard/render-date.js";
25
+ export {
26
+ t as AdjustmentType,
27
+ h as AdminDashboard,
28
+ g as AdminDashboardSkeleton,
29
+ E as ApprovedAdjustments,
30
+ b as AssociateDetail,
31
+ R as AttendanceOverview,
32
+ C as BreakAdmin,
33
+ W as BreakAdminHeader,
34
+ I as BreakAdminSkeleton,
35
+ M as BreakBalance,
36
+ F as BreakRequestCard,
37
+ J as Breaks,
38
+ N as Calendar,
39
+ Q as CorrectionList,
40
+ V as DashboardHeader,
41
+ Y as DeleteBreak,
42
+ _ as EditBreak,
43
+ ee as EditBreakBalance,
44
+ te as LeaveRequest,
45
+ ae as LeaveRequests,
46
+ fe as RenderDate,
47
+ p as formatDate,
48
+ d as formatDateIST,
49
+ x as formatDateWithWeekday,
50
+ n as formatOptionalDate,
51
+ s as formatTimeIST,
52
+ i as getDaySuffix,
53
+ D as getEndOfDay,
54
+ k as getMonthDays,
55
+ A as getStartOfDay,
56
+ l as getWeekDays,
57
+ B as isSameDay,
58
+ u as removeAllEmojis,
59
+ y as removeEmojiAtStart,
60
+ o as renderAdjustmentType,
61
+ m as renderStatus
62
+ };
@@ -0,0 +1,113 @@
1
+ export type UserRole = 'Apprentice' | 'Associate' | 'Admin' | 'SuperAdmin';
2
+ export type AttendanceStatus = 'PRESENT' | 'ABSENT' | 'BREAK' | 'Not_Marked' | 'HOLIDAY' | 'WEEKEND';
3
+ export type CorrectionStatus = 'PENDING' | 'APPROVED' | 'REJECTED';
4
+ export type BreakRequestStatus = 'PENDING' | 'APPROVED' | 'REJECTED' | 'CANCELLED';
5
+ export interface AdminUser {
6
+ id: string;
7
+ name: string;
8
+ firstName?: string;
9
+ lastName?: string;
10
+ email: string;
11
+ devalokEmail?: string;
12
+ designation: string | null;
13
+ image: string | null;
14
+ role: UserRole;
15
+ isActive: boolean;
16
+ createdAt: string | Date;
17
+ }
18
+ export interface AttendanceRecord {
19
+ id: string;
20
+ userId: string;
21
+ date: string;
22
+ timeIn: string | null;
23
+ timeOut: string | null;
24
+ status: AttendanceStatus;
25
+ correctionStatus?: CorrectionStatus | null;
26
+ reason?: string | null;
27
+ adminComment?: string | null;
28
+ requestedDate?: string | null;
29
+ newTimeIn?: string | null;
30
+ newTimeOut?: string | null;
31
+ oldTimeIn?: string | null;
32
+ oldTimeOut?: string | null;
33
+ user?: AdminUser;
34
+ }
35
+ export interface BreakRequest {
36
+ id: string;
37
+ userId: string;
38
+ startDate: string;
39
+ endDate: string;
40
+ numberOfDays: number;
41
+ reason: string;
42
+ status: BreakRequestStatus;
43
+ adminComment?: string | null;
44
+ correction?: boolean;
45
+ user?: Pick<AdminUser, 'id' | 'name' | 'firstName' | 'image'>;
46
+ }
47
+ export interface BreakBalanceData {
48
+ id: string;
49
+ userId: string;
50
+ totalDays: number;
51
+ usedDays?: number;
52
+ carryForward: number;
53
+ cashout: number;
54
+ yearlyBalance?: number;
55
+ other?: number;
56
+ user?: Pick<AdminUser, 'id' | 'name' | 'firstName' | 'image'>;
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ }
60
+ export interface Adjustment {
61
+ id: string;
62
+ userId: string;
63
+ numberOfDays: number;
64
+ type: string;
65
+ reason: string;
66
+ status: string;
67
+ comment: string | null;
68
+ approvedBy: string | null;
69
+ createdAt: string;
70
+ updatedAt: string;
71
+ user?: Pick<AdminUser, 'name' | 'email'>;
72
+ approver?: Pick<AdminUser, 'name' | 'email'>;
73
+ }
74
+ export interface GroupedAttendance {
75
+ present: Array<{
76
+ user: AdminUser;
77
+ attendance: AttendanceRecord;
78
+ }>;
79
+ absent: Array<{
80
+ user: AdminUser;
81
+ attendance?: AttendanceRecord;
82
+ }>;
83
+ onBreak: Array<{
84
+ user: AdminUser;
85
+ attendance: AttendanceRecord;
86
+ breakRequest?: BreakRequest;
87
+ }>;
88
+ yetToMark: Array<{
89
+ user: AdminUser;
90
+ }>;
91
+ }
92
+ export interface DayInfo {
93
+ day: string;
94
+ date: number;
95
+ fullDate: Date;
96
+ isToday: boolean;
97
+ isActive: boolean;
98
+ isPadding?: boolean;
99
+ hasBreak?: boolean;
100
+ isAbsent?: boolean;
101
+ isDisabled?: boolean;
102
+ }
103
+ /** SSE real-time event callbacks */
104
+ export interface RealtimeCallbacks {
105
+ onBreakRequestCreated?: (data: unknown) => void;
106
+ onBreakRequestApproved?: (data: unknown) => void;
107
+ onBreakRequestRejected?: (data: unknown) => void;
108
+ onBreakRequestCancelled?: (data: unknown) => void;
109
+ onAttendanceCorrectionCreated?: (data: unknown) => void;
110
+ onAttendanceCorrectionProcessed?: (data: unknown) => void;
111
+ onTaskUpdated?: (data: unknown) => void;
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/admin/types.ts"],"names":[],"mappings":"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"}