@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.
- package/dist/admin/adjustments/approved-adjustments.d.ts +10 -0
- package/dist/admin/adjustments/approved-adjustments.d.ts.map +1 -0
- package/dist/admin/adjustments/approved-adjustments.js +42 -0
- package/dist/admin/adjustments/index.d.ts +2 -0
- package/dist/admin/adjustments/index.d.ts.map +1 -0
- package/dist/admin/break/break-admin-skeleton.d.ts +3 -0
- package/dist/admin/break/break-admin-skeleton.d.ts.map +1 -0
- package/dist/admin/break/break-admin-skeleton.js +58 -0
- package/dist/admin/break/break-admin.d.ts +79 -0
- package/dist/admin/break/break-admin.d.ts.map +1 -0
- package/dist/admin/break/break-admin.js +346 -0
- package/dist/admin/break/break-balance.d.ts +14 -0
- package/dist/admin/break/break-balance.d.ts.map +1 -0
- package/dist/admin/break/break-balance.js +41 -0
- package/dist/admin/break/breaks.d.ts +21 -0
- package/dist/admin/break/breaks.d.ts.map +1 -0
- package/dist/admin/break/breaks.js +90 -0
- package/dist/admin/break/delete-break.d.ts +10 -0
- package/dist/admin/break/delete-break.d.ts.map +1 -0
- package/dist/admin/break/delete-break.js +53 -0
- package/dist/admin/break/edit-break-balance.d.ts +15 -0
- package/dist/admin/break/edit-break-balance.d.ts.map +1 -0
- package/dist/admin/break/edit-break-balance.js +111 -0
- package/dist/admin/break/edit-break.d.ts +23 -0
- package/dist/admin/break/edit-break.d.ts.map +1 -0
- package/dist/admin/break/edit-break.js +485 -0
- package/dist/admin/break/header.d.ts +22 -0
- package/dist/admin/break/header.d.ts.map +1 -0
- package/dist/admin/break/header.js +228 -0
- package/dist/admin/break/index.d.ts +18 -0
- package/dist/admin/break/index.d.ts.map +1 -0
- package/dist/admin/break/leave-request.d.ts +17 -0
- package/dist/admin/break/leave-request.d.ts.map +1 -0
- package/dist/admin/break/leave-request.js +162 -0
- package/dist/admin/break/use-break-date-picker.d.ts +25 -0
- package/dist/admin/break/use-break-date-picker.d.ts.map +1 -0
- package/dist/admin/break/use-break-date-picker.js +42 -0
- package/dist/admin/dashboard/admin-dashboard.d.ts +109 -0
- package/dist/admin/dashboard/admin-dashboard.d.ts.map +1 -0
- package/dist/admin/dashboard/admin-dashboard.js +336 -0
- package/dist/admin/dashboard/associate-detail.d.ts +36 -0
- package/dist/admin/dashboard/associate-detail.d.ts.map +1 -0
- package/dist/admin/dashboard/associate-detail.js +269 -0
- package/dist/admin/dashboard/attendance-overview.d.ts +11 -0
- package/dist/admin/dashboard/attendance-overview.d.ts.map +1 -0
- package/dist/admin/dashboard/attendance-overview.js +137 -0
- package/dist/admin/dashboard/break-request.d.ts +25 -0
- package/dist/admin/dashboard/break-request.d.ts.map +1 -0
- package/dist/admin/dashboard/break-request.js +174 -0
- package/dist/admin/dashboard/calendar.d.ts +7 -0
- package/dist/admin/dashboard/calendar.d.ts.map +1 -0
- package/dist/admin/dashboard/calendar.js +140 -0
- package/dist/admin/dashboard/correction-list.d.ts +21 -0
- package/dist/admin/dashboard/correction-list.d.ts.map +1 -0
- package/dist/admin/dashboard/correction-list.js +99 -0
- package/dist/admin/dashboard/dashboard-header.d.ts +18 -0
- package/dist/admin/dashboard/dashboard-header.d.ts.map +1 -0
- package/dist/admin/dashboard/dashboard-header.js +153 -0
- package/dist/admin/dashboard/dashboard-skeleton.d.ts +3 -0
- package/dist/admin/dashboard/dashboard-skeleton.d.ts.map +1 -0
- package/dist/admin/dashboard/dashboard-skeleton.js +110 -0
- package/dist/admin/dashboard/index.d.ts +13 -0
- package/dist/admin/dashboard/index.d.ts.map +1 -0
- package/dist/admin/dashboard/leave-requests.d.ts +26 -0
- package/dist/admin/dashboard/leave-requests.d.ts.map +1 -0
- package/dist/admin/dashboard/leave-requests.js +197 -0
- package/dist/admin/dashboard/render-date.d.ts +16 -0
- package/dist/admin/dashboard/render-date.d.ts.map +1 -0
- package/dist/admin/dashboard/render-date.js +143 -0
- package/dist/admin/dashboard/use-calendar-navigation.d.ts +60 -0
- package/dist/admin/dashboard/use-calendar-navigation.d.ts.map +1 -0
- package/dist/admin/dashboard/use-calendar-navigation.js +168 -0
- package/dist/admin/dashboard/use-leave-request-interaction.d.ts +21 -0
- package/dist/admin/dashboard/use-leave-request-interaction.d.ts.map +1 -0
- package/dist/admin/dashboard/use-leave-request-interaction.js +33 -0
- package/dist/admin/icons.d.ts +2 -0
- package/dist/admin/icons.d.ts.map +1 -0
- package/dist/admin/index.d.ts +9 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +62 -0
- package/dist/admin/types.d.ts +113 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/utils/date-range-utils.d.ts +35 -0
- package/dist/admin/utils/date-range-utils.d.ts.map +1 -0
- package/dist/admin/utils/date-range-utils.js +36 -0
- package/dist/admin/utils/date-utils.d.ts +29 -0
- package/dist/admin/utils/date-utils.d.ts.map +1 -0
- package/dist/admin/utils/date-utils.js +118 -0
- package/dist/admin/utils/emoji-utils.d.ts +3 -0
- package/dist/admin/utils/emoji-utils.d.ts.map +1 -0
- package/dist/admin/utils/emoji-utils.js +16 -0
- package/dist/admin/utils/render-adjustment-type.d.ts +17 -0
- package/dist/admin/utils/render-adjustment-type.d.ts.map +1 -0
- package/dist/admin/utils/render-adjustment-type.js +19 -0
- package/dist/admin/utils/render-status.d.ts +3 -0
- package/dist/admin/utils/render-status.d.ts.map +1 -0
- package/dist/admin/utils/render-status.js +21 -0
- package/dist/board/board-column.d.ts +20 -0
- package/dist/board/board-column.d.ts.map +1 -0
- package/dist/board/board-column.js +233 -0
- package/dist/board/index.d.ts +4 -0
- package/dist/board/index.d.ts.map +1 -0
- package/dist/board/index.js +9 -0
- package/dist/board/kanban-board.d.ts +17 -0
- package/dist/board/kanban-board.d.ts.map +1 -0
- package/dist/board/kanban-board.js +218 -0
- package/dist/board/task-card.d.ts +25 -0
- package/dist/board/task-card.d.ts.map +1 -0
- package/dist/board/task-card.js +169 -0
- package/dist/chat/chat-input.d.ts +10 -0
- package/dist/chat/chat-input.d.ts.map +1 -0
- package/dist/chat/chat-input.js +52 -0
- package/dist/chat/chat-panel.d.ts +31 -0
- package/dist/chat/chat-panel.d.ts.map +1 -0
- package/dist/chat/chat-panel.js +150 -0
- package/dist/chat/conversation-list.d.ts +17 -0
- package/dist/chat/conversation-list.d.ts.map +1 -0
- package/dist/chat/conversation-list.js +98 -0
- package/dist/chat/index.d.ts +6 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +12 -0
- package/dist/chat/message-list.d.ts +16 -0
- package/dist/chat/message-list.d.ts.map +1 -0
- package/dist/chat/message-list.js +69 -0
- package/dist/chat/streaming-text.d.ts +6 -0
- package/dist/chat/streaming-text.d.ts.map +1 -0
- package/dist/chat/streaming-text.js +29 -0
- package/dist/client/accent-provider.d.ts +14 -0
- package/dist/client/accent-provider.d.ts.map +1 -0
- package/dist/client/accent-provider.js +21 -0
- package/dist/client/client-portal-header.d.ts +10 -0
- package/dist/client/client-portal-header.d.ts.map +1 -0
- package/dist/client/client-portal-header.js +47 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/project-card.d.ts +11 -0
- package/dist/client/project-card.d.ts.map +1 -0
- package/dist/client/project-card.js +59 -0
- package/dist/dashboard/attendance-cta.d.ts +22 -0
- package/dist/dashboard/attendance-cta.d.ts.map +1 -0
- package/dist/dashboard/attendance-cta.js +127 -0
- package/dist/dashboard/daily-brief.d.ts +13 -0
- package/dist/dashboard/daily-brief.d.ts.map +1 -0
- package/dist/dashboard/daily-brief.js +66 -0
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/page-skeletons.d.ts +5 -0
- package/dist/page-skeletons.d.ts.map +1 -0
- package/dist/page-skeletons.js +129 -0
- package/dist/tasks/activity-tab.d.ts +20 -0
- package/dist/tasks/activity-tab.d.ts.map +1 -0
- package/dist/tasks/activity-tab.js +184 -0
- package/dist/tasks/conversation-tab.d.ts +45 -0
- package/dist/tasks/conversation-tab.d.ts.map +1 -0
- package/dist/tasks/conversation-tab.js +126 -0
- package/dist/tasks/files-tab.d.ts +28 -0
- package/dist/tasks/files-tab.d.ts.map +1 -0
- package/dist/tasks/files-tab.js +184 -0
- package/dist/tasks/index.d.ts +8 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +16 -0
- package/dist/tasks/review-tab.d.ts +32 -0
- package/dist/tasks/review-tab.d.ts.map +1 -0
- package/dist/tasks/review-tab.js +169 -0
- package/dist/tasks/subtasks-tab.d.ts +36 -0
- package/dist/tasks/subtasks-tab.d.ts.map +1 -0
- package/dist/tasks/subtasks-tab.js +153 -0
- package/dist/tasks/task-constants.d.ts +9 -0
- package/dist/tasks/task-constants.d.ts.map +1 -0
- package/dist/tasks/task-constants.js +21 -0
- package/dist/tasks/task-detail-panel.d.ts +93 -0
- package/dist/tasks/task-detail-panel.d.ts.map +1 -0
- package/dist/tasks/task-detail-panel.js +208 -0
- package/dist/tasks/task-properties.d.ts +60 -0
- package/dist/tasks/task-properties.d.ts.map +1 -0
- package/dist/tasks/task-properties.js +316 -0
- package/package.json +67 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { jsx as s, jsxs as x } from "react/jsx-runtime";
|
|
2
|
+
import * as k from "react";
|
|
3
|
+
import { useRef as N, useCallback as O, useState as g } from "react";
|
|
4
|
+
import { cn as j } from "@devalok/shilp-sutra/ui";
|
|
5
|
+
import { AvatarGroup as w } from "@devalok/shilp-sutra/composed";
|
|
6
|
+
function A(l, u, m) {
|
|
7
|
+
const c = [];
|
|
8
|
+
if (!(l != null && l.length)) return { onBreak: c };
|
|
9
|
+
const d = new Date(m), f = new Date(d);
|
|
10
|
+
f.setHours(0, 0, 0, 0);
|
|
11
|
+
const a = new Date(d);
|
|
12
|
+
a.setHours(23, 59, 59, 999);
|
|
13
|
+
const n = /* @__PURE__ */ new Map();
|
|
14
|
+
return u.forEach((r) => {
|
|
15
|
+
const p = new Date(r.date);
|
|
16
|
+
p >= f && p <= a && n.set(r.userId, r.status);
|
|
17
|
+
}), l.forEach((r) => {
|
|
18
|
+
n.get(r.id) === "BREAK" && c.push(r);
|
|
19
|
+
}), { onBreak: c };
|
|
20
|
+
}
|
|
21
|
+
const B = k.forwardRef(
|
|
22
|
+
function({
|
|
23
|
+
isFutureDate: u,
|
|
24
|
+
users: m,
|
|
25
|
+
groupedAttendance: c,
|
|
26
|
+
userImages: d,
|
|
27
|
+
selectedDate: f
|
|
28
|
+
}, a) {
|
|
29
|
+
var v;
|
|
30
|
+
const n = N(null), r = O((t) => {
|
|
31
|
+
n.current = t, typeof a == "function" ? a(t) : a && (a.current = t);
|
|
32
|
+
}, [a]), [p, h] = g(!1), [M, b] = g(0), [y, D] = g(0);
|
|
33
|
+
return (
|
|
34
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions -- drag-to-scroll UX enhancement on scrollable container
|
|
35
|
+
/* @__PURE__ */ s(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
ref: r,
|
|
39
|
+
className: "hide-scrollbar w-full cursor-grab overflow-x-auto active:cursor-grabbing max-md:pb-ds-05",
|
|
40
|
+
onMouseDown: (t) => {
|
|
41
|
+
var o, e;
|
|
42
|
+
h(!0), b(t.pageX - (((o = n.current) == null ? void 0 : o.offsetLeft) || 0)), D(((e = n.current) == null ? void 0 : e.scrollLeft) || 0);
|
|
43
|
+
},
|
|
44
|
+
onMouseMove: (t) => {
|
|
45
|
+
var i;
|
|
46
|
+
if (!p) return;
|
|
47
|
+
t.preventDefault();
|
|
48
|
+
const e = (t.pageX - (((i = n.current) == null ? void 0 : i.offsetLeft) || 0) - M) * 2;
|
|
49
|
+
n.current && (n.current.scrollLeft = y - e);
|
|
50
|
+
},
|
|
51
|
+
onMouseUp: () => {
|
|
52
|
+
h(!1);
|
|
53
|
+
},
|
|
54
|
+
onMouseLeave: () => {
|
|
55
|
+
h(!1);
|
|
56
|
+
},
|
|
57
|
+
style: {
|
|
58
|
+
scrollbarWidth: "none",
|
|
59
|
+
msOverflowStyle: "none"
|
|
60
|
+
},
|
|
61
|
+
children: /* @__PURE__ */ s(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
className: "items-flex-start flex flex-row justify-start gap-ds-04 px-0 pt-ds-03 md:gap-0 md:px-ds-06",
|
|
65
|
+
style: { minWidth: "max-content" },
|
|
66
|
+
children: u ? /* @__PURE__ */ s("div", { className: "min-h-28", children: m && ((v = Object.entries(
|
|
67
|
+
A(
|
|
68
|
+
m,
|
|
69
|
+
[],
|
|
70
|
+
f
|
|
71
|
+
)
|
|
72
|
+
)) == null ? void 0 : v.map(([t, o]) => {
|
|
73
|
+
const e = o;
|
|
74
|
+
return /* @__PURE__ */ x(
|
|
75
|
+
"div",
|
|
76
|
+
{
|
|
77
|
+
className: "flex w-full flex-col gap-ds-04 rounded-ds-md bg-layer-02 p-ds-06 md:rounded-ds-lg",
|
|
78
|
+
children: [
|
|
79
|
+
(e == null ? void 0 : e.length) > 0 && /* @__PURE__ */ s("h2", { className: "text-ds-sm font-semibold uppercase tracking-wider capitalize text-text-tertiary", children: `On Break (${(e == null ? void 0 : e.length) || 0})` }),
|
|
80
|
+
/* @__PURE__ */ s("div", { className: "flex w-full flex-wrap items-center", children: (e == null ? void 0 : e.length) > 0 && /* @__PURE__ */ s(
|
|
81
|
+
w,
|
|
82
|
+
{
|
|
83
|
+
users: e == null ? void 0 : e.map((i) => ({
|
|
84
|
+
image: d[i.id],
|
|
85
|
+
name: i.name || "User"
|
|
86
|
+
})),
|
|
87
|
+
max: 4,
|
|
88
|
+
showTooltip: !1
|
|
89
|
+
}
|
|
90
|
+
) })
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
t
|
|
94
|
+
);
|
|
95
|
+
})) }) : Object.entries(c || {}).map(
|
|
96
|
+
([t, o]) => /* @__PURE__ */ x(
|
|
97
|
+
"div",
|
|
98
|
+
{
|
|
99
|
+
className: j("flex w-full flex-col gap-ds-04 rounded-ds-md bg-layer-02 p-ds-06 md:rounded-ds-lg md:p-ds-05", t !== "yetToMark" ? "border-r border-border" : "", "max-md:border-0 max-md:p-ds-05"),
|
|
100
|
+
style: { minWidth: "200px" },
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ x("h2", { className: "text-ds-sm font-semibold uppercase tracking-wider capitalize text-text-tertiary", children: [
|
|
103
|
+
t === "yetToMark" ? "Yet to Mark" : t.replace(/([A-Z])/g, " $1").toLowerCase(),
|
|
104
|
+
" ",
|
|
105
|
+
"(",
|
|
106
|
+
o.length,
|
|
107
|
+
")"
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ s("div", { className: "flex cursor-pointer flex-wrap items-center", children: /* @__PURE__ */ s(
|
|
110
|
+
w,
|
|
111
|
+
{
|
|
112
|
+
users: o.map(
|
|
113
|
+
({ user: e }) => ({
|
|
114
|
+
image: d[e.id],
|
|
115
|
+
name: e.name
|
|
116
|
+
})
|
|
117
|
+
),
|
|
118
|
+
max: 4,
|
|
119
|
+
showTooltip: !1
|
|
120
|
+
}
|
|
121
|
+
) })
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
t
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
B.displayName = "AttendanceOverview";
|
|
135
|
+
export {
|
|
136
|
+
B as AttendanceOverview
|
|
137
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BreakRequest as BreakRequestType } from '../types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface BreakRequestProps {
|
|
4
|
+
/** The currently selected date */
|
|
5
|
+
selectedDate: string | Date;
|
|
6
|
+
/** The user ID whose break is displayed */
|
|
7
|
+
userId: string;
|
|
8
|
+
/** The break request data to display (pre-fetched) */
|
|
9
|
+
breakRequest?: BreakRequestType | null;
|
|
10
|
+
/** Optional base URL for static assets */
|
|
11
|
+
assetsBaseUrl?: string;
|
|
12
|
+
/** Callback to cancel a break */
|
|
13
|
+
onCancelBreak?: (params: {
|
|
14
|
+
requestId: string;
|
|
15
|
+
deleteSingleDay: boolean;
|
|
16
|
+
dateToCancel: string | Date;
|
|
17
|
+
userId: string;
|
|
18
|
+
}) => void | Promise<void>;
|
|
19
|
+
/** Callback invoked after a successful cancel to refresh the selected user's attendance */
|
|
20
|
+
onRefreshAttendance?: () => void | Promise<void>;
|
|
21
|
+
/** Callback invoked after a successful cancel to refresh grouped attendance data */
|
|
22
|
+
onRefreshGroupedAttendance?: () => void | Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare const BreakRequestCard: React.ForwardRefExoticComponent<BreakRequestProps & React.RefAttributes<HTMLDivElement>>;
|
|
25
|
+
//# sourceMappingURL=break-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"break-request.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/break-request.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAuB9B,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAMhE,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACtC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iCAAiC;IACjC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,MAAM,CAAA;QACjB,eAAe,EAAE,OAAO,CAAA;QACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,MAAM,EAAE,MAAM,CAAA;KACf,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD;AAMD,eAAO,MAAM,gBAAgB,0FAqP5B,CAAA"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { jsxs as s, jsx as e, Fragment as f } from "react/jsx-runtime";
|
|
2
|
+
import * as F from "react";
|
|
3
|
+
import { useState as v, useEffect as M } from "react";
|
|
4
|
+
import { Button as h } from "@devalok/shilp-sutra/ui";
|
|
5
|
+
import { Checkbox as D } from "@devalok/shilp-sutra/ui";
|
|
6
|
+
import { Dialog as w, DialogTrigger as C, DialogContent as j, DialogHeader as E, DialogFooter as k, DialogClose as S } from "@devalok/shilp-sutra/ui";
|
|
7
|
+
import { cn as T } from "@devalok/shilp-sutra/ui";
|
|
8
|
+
import { formatDate as B, getDaySuffix as p } from "../utils/date-utils.js";
|
|
9
|
+
import { removeAllEmojis as W } from "../utils/emoji-utils.js";
|
|
10
|
+
import { renderStatus as $ } from "../utils/render-status.js";
|
|
11
|
+
import { format as I, startOfDay as O, isSameDay as J, isAfter as L } from "date-fns";
|
|
12
|
+
import { IconX as V } from "@tabler/icons-react";
|
|
13
|
+
const z = F.forwardRef(
|
|
14
|
+
function({
|
|
15
|
+
selectedDate: i,
|
|
16
|
+
userId: P,
|
|
17
|
+
breakRequest: t,
|
|
18
|
+
assetsBaseUrl: u = "",
|
|
19
|
+
onCancelBreak: a,
|
|
20
|
+
onRefreshAttendance: n,
|
|
21
|
+
onRefreshGroupedAttendance: c
|
|
22
|
+
}, Y) {
|
|
23
|
+
const [o, y] = v(!0), [r, d] = v(!1);
|
|
24
|
+
M(() => {
|
|
25
|
+
d(!1);
|
|
26
|
+
}, [i]);
|
|
27
|
+
const g = t && t.numberOfDays === 1, m = () => {
|
|
28
|
+
if (!t) return !1;
|
|
29
|
+
const l = O(/* @__PURE__ */ new Date()), N = O(new Date(t.endDate));
|
|
30
|
+
return J(N, l) || L(N, l);
|
|
31
|
+
}, x = async () => {
|
|
32
|
+
!t || !a || (await a({
|
|
33
|
+
requestId: t.id,
|
|
34
|
+
deleteSingleDay: o,
|
|
35
|
+
dateToCancel: i,
|
|
36
|
+
userId: P
|
|
37
|
+
}), d(!1), n == null || n(), c == null || c());
|
|
38
|
+
}, b = (l) => I(new Date(l), "dd/MM/yyyy");
|
|
39
|
+
return !t || t.status === "CANCELLED" ? null : /* @__PURE__ */ s("div", { ref: Y, className: "relative flex w-full flex-col gap-ds-06 rounded-ds-lg bg-layer-accent-subtle", children: [
|
|
40
|
+
u && /* @__PURE__ */ e(
|
|
41
|
+
"img",
|
|
42
|
+
{
|
|
43
|
+
src: `${u}/break-background.svg`,
|
|
44
|
+
alt: "Break Background",
|
|
45
|
+
className: "absolute bottom-0 z-0 h-full min-h-[236px] rounded-ds-lg object-cover"
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
/* @__PURE__ */ s("div", { className: "relative flex min-h-[236px] flex-col items-center justify-between rounded-ds-lg md:flex-row", children: [
|
|
49
|
+
r && g ? /* @__PURE__ */ e("div", { className: "flex h-full w-full flex-col items-center justify-center px-ds-04 pt-[17px]", children: /* @__PURE__ */ s("div", { className: "w-full gap-ds-05 rounded-ds-md bg-layer-01 shadow-01 px-ds-06 py-ds-07 md:hidden", children: [
|
|
50
|
+
/* @__PURE__ */ s("div", { className: "flex flex-col items-center gap-ds-04", children: [
|
|
51
|
+
/* @__PURE__ */ e("div", { className: "text-ds-lg font-semibold text-center text-text-primary", children: "Cancel this break?" }),
|
|
52
|
+
/* @__PURE__ */ s("div", { className: "text-ds-base max-w-[240px] text-center text-text-tertiary max-md:leading-[100%]", children: [
|
|
53
|
+
"You're about to cancel the break scheduled for",
|
|
54
|
+
" ",
|
|
55
|
+
/* @__PURE__ */ e("span", { className: "font-semibold text-text-secondary", children: b(t.startDate) })
|
|
56
|
+
] })
|
|
57
|
+
] }),
|
|
58
|
+
/* @__PURE__ */ e("div", { className: "mt-ds-05 flex w-full flex-col gap-ds-04", children: /* @__PURE__ */ e(h, { variant: "primary", className: "w-full rounded-ds-full", onClick: x, children: "Yes, cancel" }) }),
|
|
59
|
+
/* @__PURE__ */ e(
|
|
60
|
+
"button",
|
|
61
|
+
{
|
|
62
|
+
className: "absolute right-ds-05 top-ds-05 rounded-ds-sm p-ds-04 text-icon-secondary transition-colors hover:text-icon-primary hover:bg-field focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus disabled:pointer-events-none",
|
|
63
|
+
onClick: () => d(!1),
|
|
64
|
+
children: /* @__PURE__ */ e(V, { className: "h-ico-lg w-ico-lg" })
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] }) }) : /* @__PURE__ */ s("div", { className: "flex h-full w-full flex-col items-center justify-center gap-ds-06 p-ds-06 px-ds-06 py-ds-07 md:w-1/2 md:p-ds-07", children: [
|
|
68
|
+
/* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-end gap-ds-05", children: [
|
|
69
|
+
/* @__PURE__ */ e("div", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: "Reason" }),
|
|
70
|
+
/* @__PURE__ */ e("div", { className: "text-ds-lg font-semibold text-text-primary", children: W((t == null ? void 0 : t.reason) || " ") })
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-end gap-ds-05", children: [
|
|
73
|
+
/* @__PURE__ */ e("div", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: "Break Period" }),
|
|
74
|
+
/* @__PURE__ */ s("div", { className: "text-ds-lg font-semibold text-text-primary", children: [
|
|
75
|
+
B(new Date(t.startDate)),
|
|
76
|
+
" ",
|
|
77
|
+
t.numberOfDays > 1 && /* @__PURE__ */ s(f, { children: [
|
|
78
|
+
"- ",
|
|
79
|
+
B(new Date(t.endDate)),
|
|
80
|
+
" "
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ e("span", { className: "text-ds-lg text-text-placeholder", children: `(${t.numberOfDays} day${t.numberOfDays > 1 ? "s" : ""})` })
|
|
83
|
+
] })
|
|
84
|
+
] })
|
|
85
|
+
] }),
|
|
86
|
+
!r && /* @__PURE__ */ s(f, { children: [
|
|
87
|
+
/* @__PURE__ */ e("div", { className: "h-[1px] w-[329px] bg-border-subtle md:hidden max-md:w-[90%]" }),
|
|
88
|
+
/* @__PURE__ */ e("div", { className: "hidden h-[170px] w-[2px] bg-border-subtle md:block" })
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ s(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
className: T("flex w-full flex-col items-center justify-center px-ds-05", r || t.status === "APPROVED" || t.status === "REJECTED" ? "pb-ds-06 pt-[9px]" : "py-ds-06", "md:w-1/2 md:px-ds-06 md:py-ds-05 max-md:pt-[34px]"),
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm font-semibold uppercase tracking-wider mb-ds-06 text-text-tertiary max-md:mb-ds-05", children: "Break Status" }),
|
|
96
|
+
/* @__PURE__ */ s("div", { className: "mb-ds-04 flex w-full flex-col items-center justify-start gap-ds-04 rounded-ds-2xl border border-border-subtle bg-layer-01 shadow-01 px-ds-05 py-ds-04 text-center font-semibold text-text-primary", children: [
|
|
97
|
+
$(t.status, !1),
|
|
98
|
+
t.status === "APPROVED" && t.adminComment,
|
|
99
|
+
t.status === "REJECTED" && t.adminComment
|
|
100
|
+
] }),
|
|
101
|
+
g ? /* @__PURE__ */ s(f, { children: [
|
|
102
|
+
m() && a && /* @__PURE__ */ e(
|
|
103
|
+
"button",
|
|
104
|
+
{
|
|
105
|
+
className: "text-ds-sm cursor-pointer border-none bg-transparent text-interactive-hover underline md:hidden",
|
|
106
|
+
onClick: () => d(!r),
|
|
107
|
+
children: "Want to cancel this break?"
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
/* @__PURE__ */ s(w, { children: [
|
|
111
|
+
m() && a && /* @__PURE__ */ e(C, { asChild: !0, children: /* @__PURE__ */ e("button", { className: "text-ds-sm hidden cursor-pointer border-none bg-transparent text-interactive-hover underline md:block", children: "Want to cancel this break?" }) }),
|
|
112
|
+
/* @__PURE__ */ s(j, { className: "max-w-[329px] gap-ds-04 rounded-ds-xl", children: [
|
|
113
|
+
/* @__PURE__ */ e(E, { children: /* @__PURE__ */ e("div", { className: "text-ds-lg font-semibold text-center text-text-primary", children: "Cancel this break?" }) }),
|
|
114
|
+
/* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-start", children: /* @__PURE__ */ s("div", { className: "text-ds-base max-w-[241px] text-center text-text-tertiary", children: [
|
|
115
|
+
"You're about to cancel the break scheduled for",
|
|
116
|
+
" ",
|
|
117
|
+
/* @__PURE__ */ e("span", { className: "font-semibold text-text-secondary", children: b(t.startDate) })
|
|
118
|
+
] }) }),
|
|
119
|
+
/* @__PURE__ */ e(k, { className: "mt-ds-04 sm:justify-start", children: /* @__PURE__ */ e(S, { asChild: !0, children: /* @__PURE__ */ e(h, { variant: "primary", className: "w-full rounded-ds-full", onClick: x, children: "Yes, cancel" }) }) })
|
|
120
|
+
] })
|
|
121
|
+
] })
|
|
122
|
+
] }) : /* @__PURE__ */ s(w, { children: [
|
|
123
|
+
m() && a && /* @__PURE__ */ e(C, { asChild: !0, children: /* @__PURE__ */ e("button", { className: "text-ds-sm cursor-pointer border-none bg-transparent text-interactive-hover underline", children: "Want to cancel this break?" }) }),
|
|
124
|
+
/* @__PURE__ */ s(j, { className: "max-w-[329px] gap-ds-04 rounded-ds-xl", children: [
|
|
125
|
+
/* @__PURE__ */ e(E, { children: /* @__PURE__ */ e("div", { className: "text-ds-lg font-semibold flex text-center text-text-primary", children: "Cancel your break" }) }),
|
|
126
|
+
/* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-start", children: /* @__PURE__ */ s("div", { className: "flex w-full flex-col items-start", children: [
|
|
127
|
+
/* @__PURE__ */ s("label", { className: "breakRequest-checkbox flex items-center space-x-ds-03", children: [
|
|
128
|
+
/* @__PURE__ */ e(
|
|
129
|
+
D,
|
|
130
|
+
{
|
|
131
|
+
checked: o,
|
|
132
|
+
onCheckedChange: (l) => y(l === !0)
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ s("span", { className: "text-text-secondary", children: [
|
|
136
|
+
p(new Date(i).getDate()),
|
|
137
|
+
" break only"
|
|
138
|
+
] })
|
|
139
|
+
] }),
|
|
140
|
+
/* @__PURE__ */ s("label", { className: "breakRequest-checkbox mt-ds-03 flex items-center space-x-ds-03", children: [
|
|
141
|
+
/* @__PURE__ */ e(
|
|
142
|
+
D,
|
|
143
|
+
{
|
|
144
|
+
checked: !o,
|
|
145
|
+
onCheckedChange: (l) => y(l !== !0)
|
|
146
|
+
}
|
|
147
|
+
),
|
|
148
|
+
/* @__PURE__ */ s("span", { className: "text-text-secondary", children: [
|
|
149
|
+
p(
|
|
150
|
+
new Date(t.startDate).getDate()
|
|
151
|
+
),
|
|
152
|
+
" ",
|
|
153
|
+
"to",
|
|
154
|
+
" ",
|
|
155
|
+
p(new Date(t.endDate).getDate()),
|
|
156
|
+
" ",
|
|
157
|
+
"breaks"
|
|
158
|
+
] })
|
|
159
|
+
] })
|
|
160
|
+
] }) }),
|
|
161
|
+
/* @__PURE__ */ e(k, { className: "mt-ds-04 sm:justify-start", children: /* @__PURE__ */ e(S, { asChild: !0, children: /* @__PURE__ */ e(h, { variant: "primary", className: "w-full rounded-ds-full", onClick: x, children: "Yes, cancel" }) }) })
|
|
162
|
+
] })
|
|
163
|
+
] })
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
|
+
] })
|
|
168
|
+
] });
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
z.displayName = "BreakRequestCard";
|
|
172
|
+
export {
|
|
173
|
+
z as BreakRequestCard
|
|
174
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface CalendarProps {
|
|
3
|
+
onDateSelect: (date: Date) => void;
|
|
4
|
+
hasCorrection?: (date: Date) => boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/calendar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAA;CACxC;AAMD,eAAO,MAAM,QAAQ,sFA+JpB,CAAA"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import * as v from "react";
|
|
3
|
+
import { DropdownMenu as g, DropdownMenuTrigger as y, DropdownMenuContent as b, DropdownMenuItem as w } from "@devalok/shilp-sutra/ui";
|
|
4
|
+
import { SegmentedControl as D } from "@devalok/shilp-sutra/ui";
|
|
5
|
+
import { cn as s } from "@devalok/shilp-sutra/ui";
|
|
6
|
+
import { isSameDay as N } from "../utils/date-utils.js";
|
|
7
|
+
import { useCalendarNavigation as M } from "./use-calendar-navigation.js";
|
|
8
|
+
import { format as o } from "date-fns";
|
|
9
|
+
import { IconChevronDown as T, IconChevronLeft as C, IconChevronRight as k } from "@tabler/icons-react";
|
|
10
|
+
const F = v.forwardRef(
|
|
11
|
+
function({ onDateSelect: m, hasCorrection: i }, u) {
|
|
12
|
+
const t = M(), c = (e) => {
|
|
13
|
+
t.navigateDate(e);
|
|
14
|
+
}, f = (e) => {
|
|
15
|
+
t.selectMonth(e);
|
|
16
|
+
}, p = () => {
|
|
17
|
+
const e = [], d = new Date(t.currentDate).getFullYear();
|
|
18
|
+
for (let n = 0; n < 12; n++) {
|
|
19
|
+
const x = new Date(d, n, 1);
|
|
20
|
+
e.push(`${o(x, "MMMM")} ${d}`);
|
|
21
|
+
}
|
|
22
|
+
return e;
|
|
23
|
+
}, h = (e, l) => {
|
|
24
|
+
t.activeTimeFrame === "weekly" ? t.selectDate(e, l) : t.selectDayMonthly(l), m(l);
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ a("div", { ref: u, className: "w-full", children: [
|
|
27
|
+
/* @__PURE__ */ a("div", { className: "mb-ds-06 flex w-full items-center justify-start", children: [
|
|
28
|
+
/* @__PURE__ */ a(g, { children: [
|
|
29
|
+
/* @__PURE__ */ a(y, { className: "text-ds-xl flex items-center gap-ds-03 text-text-secondary", children: [
|
|
30
|
+
t.selectedMonth,
|
|
31
|
+
/* @__PURE__ */ r(T, {})
|
|
32
|
+
] }),
|
|
33
|
+
/* @__PURE__ */ r(b, { children: p().map((e) => /* @__PURE__ */ r(
|
|
34
|
+
w,
|
|
35
|
+
{
|
|
36
|
+
onSelect: () => f(e),
|
|
37
|
+
children: e
|
|
38
|
+
},
|
|
39
|
+
e
|
|
40
|
+
)) })
|
|
41
|
+
] }),
|
|
42
|
+
/* @__PURE__ */ a("div", { className: "ml-auto flex items-center gap-ds-05", children: [
|
|
43
|
+
/* @__PURE__ */ r(
|
|
44
|
+
D,
|
|
45
|
+
{
|
|
46
|
+
size: "md",
|
|
47
|
+
color: "tonal",
|
|
48
|
+
options: [
|
|
49
|
+
{ id: "weekly", text: "Weekly" },
|
|
50
|
+
{ id: "monthly", text: "Monthly" }
|
|
51
|
+
],
|
|
52
|
+
selectedId: t.activeTimeFrame,
|
|
53
|
+
onSelect: (e) => t.setActiveTimeFrame(e)
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
/* @__PURE__ */ a("div", { className: "flex gap-0", children: [
|
|
57
|
+
/* @__PURE__ */ r(
|
|
58
|
+
"button",
|
|
59
|
+
{
|
|
60
|
+
"aria-label": "Previous",
|
|
61
|
+
onClick: () => c("prev"),
|
|
62
|
+
className: "rounded-ds-full p-ds-02 hover:bg-layer-02",
|
|
63
|
+
children: /* @__PURE__ */ r(C, { className: "h-ico-md w-ico-md text-text-secondary" })
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ r(
|
|
67
|
+
"button",
|
|
68
|
+
{
|
|
69
|
+
"aria-label": "Next",
|
|
70
|
+
onClick: () => c("next"),
|
|
71
|
+
className: "rounded-ds-full p-ds-02 hover:bg-layer-02",
|
|
72
|
+
children: /* @__PURE__ */ r(k, { className: "h-ico-md w-ico-md text-text-secondary" })
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] })
|
|
76
|
+
] })
|
|
77
|
+
] }),
|
|
78
|
+
/* @__PURE__ */ a(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: s(
|
|
82
|
+
"calendar",
|
|
83
|
+
t.activeTimeFrame === "weekly" ? "flex" : "grid grid-cols-7 gap-0",
|
|
84
|
+
"w-full items-center overflow-hidden"
|
|
85
|
+
),
|
|
86
|
+
children: [
|
|
87
|
+
t.activeTimeFrame === "monthly" && ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"].map((e) => /* @__PURE__ */ r("div", { className: "pb-ds-03 pt-ds-05 text-center", children: /* @__PURE__ */ r("span", { className: "text-ds-sm font-semibold uppercase tracking-wider text-text-tertiary", children: e }) }, e)),
|
|
88
|
+
t.days.map((e, l) => /* @__PURE__ */ a(
|
|
89
|
+
"button",
|
|
90
|
+
{
|
|
91
|
+
type: "button",
|
|
92
|
+
tabIndex: e.isPadding ? -1 : 0,
|
|
93
|
+
"aria-label": e.isPadding ? void 0 : o(e.fullDate, "MMMM d, yyyy"),
|
|
94
|
+
className: s(
|
|
95
|
+
t.activeTimeFrame === "weekly" ? "w-full rounded-t-ds-lg pb-ds-04 pt-ds-05" : "pb-0 pt-0",
|
|
96
|
+
"flex cursor-pointer flex-col items-center text-center",
|
|
97
|
+
t.activeTimeFrame === "weekly" && t.activeIndex === l && "bg-layer-02",
|
|
98
|
+
e.isPadding && "opacity-50"
|
|
99
|
+
),
|
|
100
|
+
onClick: () => h(l, e.fullDate),
|
|
101
|
+
children: [
|
|
102
|
+
t.activeTimeFrame === "weekly" && /* @__PURE__ */ r("span", { className: "text-ds-sm font-semibold uppercase tracking-wider mb-ds-03 text-text-tertiary", children: e.day }),
|
|
103
|
+
/* @__PURE__ */ a(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
className: s(
|
|
107
|
+
"mx-ds-02 my-ds-02 flex-col",
|
|
108
|
+
"flex h-ds-md w-ds-md items-center justify-center",
|
|
109
|
+
t.activeTimeFrame === "monthly" && N(e.fullDate, new Date(t.selectedDate)) && "rounded-ds-full bg-interactive-subtle ring-2 ring-inset ring-interactive"
|
|
110
|
+
),
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ r(
|
|
113
|
+
"span",
|
|
114
|
+
{
|
|
115
|
+
className: s(
|
|
116
|
+
"text-ds-base flex h-ds-md w-ds-md items-center justify-center rounded-ds-full",
|
|
117
|
+
e.isToday ? "bg-interactive-hover p-ds-03 text-text-on-color" : "text-text-secondary",
|
|
118
|
+
e.isActive && !e.isToday && "bg-field"
|
|
119
|
+
),
|
|
120
|
+
children: e.date
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
i && i(e.fullDate) && /* @__PURE__ */ r("div", { className: "absolute z-raised mt-ds-06 h-ds-02b w-ds-02b translate-y-[5px] rounded-ds-full bg-text-error" })
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
l
|
|
130
|
+
))
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
] });
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
F.displayName = "Calendar";
|
|
138
|
+
export {
|
|
139
|
+
F as Calendar
|
|
140
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AdminUser, CorrectionStatus } from '../types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface AttendanceCorrection {
|
|
4
|
+
id: string;
|
|
5
|
+
date: string;
|
|
6
|
+
reason?: string;
|
|
7
|
+
requestedDate?: string;
|
|
8
|
+
correctionStatus: CorrectionStatus;
|
|
9
|
+
user?: AdminUser;
|
|
10
|
+
}
|
|
11
|
+
export interface CorrectionListProps {
|
|
12
|
+
corrections: AttendanceCorrection[];
|
|
13
|
+
currentUserId: string;
|
|
14
|
+
userImages: Record<string, string>;
|
|
15
|
+
assetsBaseUrl: string;
|
|
16
|
+
activeTimeFrame: string;
|
|
17
|
+
onApproveCorrection?: (correctionId: string) => void | Promise<void>;
|
|
18
|
+
onRejectCorrection?: (correctionId: string) => void | Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare const CorrectionList: React.ForwardRefExoticComponent<CorrectionListProps & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
//# sourceMappingURL=correction-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correction-list.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/correction-list.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAM3D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpE;AAMD,eAAO,MAAM,cAAc,4FAyI1B,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as d, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import * as j from "react";
|
|
3
|
+
import { Fragment as q } from "react";
|
|
4
|
+
import { Avatar as A, AvatarImage as O, AvatarFallback as V } from "@devalok/shilp-sutra/ui";
|
|
5
|
+
import { Tooltip as E, TooltipTrigger as F, TooltipContent as P } from "@devalok/shilp-sutra/ui";
|
|
6
|
+
import { cn as C } from "@devalok/shilp-sutra/ui";
|
|
7
|
+
import { formatDateWithWeekday as W } from "../utils/date-utils.js";
|
|
8
|
+
import { IconX as Y, IconCheck as G } from "@tabler/icons-react";
|
|
9
|
+
const J = j.forwardRef(
|
|
10
|
+
function({
|
|
11
|
+
corrections: p,
|
|
12
|
+
currentUserId: l,
|
|
13
|
+
userImages: L,
|
|
14
|
+
assetsBaseUrl: u,
|
|
15
|
+
activeTimeFrame: X,
|
|
16
|
+
onApproveCorrection: x,
|
|
17
|
+
onRejectCorrection: h
|
|
18
|
+
}, f) {
|
|
19
|
+
const t = async (a, e) => {
|
|
20
|
+
e === "APPROVED" ? await (x == null ? void 0 : x(a.id)) : await (h == null ? void 0 : h(a.id));
|
|
21
|
+
};
|
|
22
|
+
return p.length === 0 ? /* @__PURE__ */ d("div", { ref: f, className: "p-ds-05 text-center", children: "No pending corrections" }) : /* @__PURE__ */ d(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
ref: f,
|
|
26
|
+
className: "flex max-h-[200px] w-full flex-col overflow-y-auto bg-layer-01 px-ds-06 max-md:flex-1 max-md:max-h-none max-md:min-h-[372px] max-md:p-0",
|
|
27
|
+
children: p.map((a) => {
|
|
28
|
+
var e, i, y, N, g, b, w, v, D, T, k;
|
|
29
|
+
return /* @__PURE__ */ d(q, { children: /* @__PURE__ */ s("div", { className: "max-md:border-1 flex items-center justify-between px-ds-03 py-ds-04 max-md:rounded-ds-lg max-md:border-border", children: [
|
|
30
|
+
/* @__PURE__ */ s("div", { className: "flex items-center gap-ds-04", children: [
|
|
31
|
+
/* @__PURE__ */ s(A, { className: "h-ds-md w-ds-md border-2 max-md:mb-[auto]", children: [
|
|
32
|
+
/* @__PURE__ */ d(
|
|
33
|
+
O,
|
|
34
|
+
{
|
|
35
|
+
src: L[((e = a == null ? void 0 : a.user) == null ? void 0 : e.id) || ""] || (u ? u + "/Goutham.png" : ""),
|
|
36
|
+
alt: `${(i = a == null ? void 0 : a.user) == null ? void 0 : i.name}'s Icon`
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
/* @__PURE__ */ d(V, { children: ((N = (y = a == null ? void 0 : a.user) == null ? void 0 : y.name) == null ? void 0 : N[0]) || "U" })
|
|
40
|
+
] }),
|
|
41
|
+
/* @__PURE__ */ s("div", { className: "flex flex-col gap-ds-02", children: [
|
|
42
|
+
/* @__PURE__ */ d("p", { className: "text-ds-sm text-text-secondary", children: (g = a == null ? void 0 : a.user) == null ? void 0 : g.name }),
|
|
43
|
+
/* @__PURE__ */ s("div", { className: "flex w-full flex-wrap items-center gap-ds-03", children: [
|
|
44
|
+
/* @__PURE__ */ d("p", { className: "text-ds-base font-semibold text-text-primary", children: a == null ? void 0 : a.reason }),
|
|
45
|
+
a != null && a.reason ? /* @__PURE__ */ d("p", { className: "text-ds-base font-semibold text-text-tertiary", children: "•" }) : null,
|
|
46
|
+
/* @__PURE__ */ d("p", { className: "text-ds-base text-text-tertiary", children: W(
|
|
47
|
+
new Date(a == null ? void 0 : a.date)
|
|
48
|
+
) })
|
|
49
|
+
] })
|
|
50
|
+
] })
|
|
51
|
+
] }),
|
|
52
|
+
/* @__PURE__ */ s("div", { className: "ml-auto flex items-center gap-ds-04 max-md:flex-col max-md:justify-center max-md:gap-0", children: [
|
|
53
|
+
/* @__PURE__ */ d("div", { className: "p-ds-02", children: /* @__PURE__ */ s(E, { delayDuration: 0, children: [
|
|
54
|
+
/* @__PURE__ */ d(F, { asChild: !0, children: /* @__PURE__ */ d(
|
|
55
|
+
"button",
|
|
56
|
+
{
|
|
57
|
+
className: C("rounded-ds-full p-ds-03 text-text-tertiary hover:text-text-secondary", ((b = a == null ? void 0 : a.user) == null ? void 0 : b.id) === l ? "cursor-not-allowed opacity-[0.38]" : ""),
|
|
58
|
+
onClick: () => {
|
|
59
|
+
var m;
|
|
60
|
+
return ((m = a == null ? void 0 : a.user) == null ? void 0 : m.id) !== l && t(
|
|
61
|
+
a,
|
|
62
|
+
"REJECTED"
|
|
63
|
+
);
|
|
64
|
+
},
|
|
65
|
+
disabled: ((w = a == null ? void 0 : a.user) == null ? void 0 : w.id) === l,
|
|
66
|
+
children: /* @__PURE__ */ d(Y, { className: "h-ico-lg w-ico-lg" })
|
|
67
|
+
}
|
|
68
|
+
) }),
|
|
69
|
+
((v = a == null ? void 0 : a.user) == null ? void 0 : v.id) === l && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d("p", { children: "You cannot approve/reject your own correction request" }) })
|
|
70
|
+
] }) }),
|
|
71
|
+
/* @__PURE__ */ d("div", { className: "p-ds-02", children: /* @__PURE__ */ s(E, { delayDuration: 0, children: [
|
|
72
|
+
/* @__PURE__ */ d(F, { asChild: !0, children: /* @__PURE__ */ d(
|
|
73
|
+
"button",
|
|
74
|
+
{
|
|
75
|
+
className: C("rounded-ds-full p-ds-03", ((D = a == null ? void 0 : a.user) == null ? void 0 : D.id) === l ? "cursor-not-allowed opacity-[0.38]" : ""),
|
|
76
|
+
onClick: () => {
|
|
77
|
+
var m;
|
|
78
|
+
return ((m = a == null ? void 0 : a.user) == null ? void 0 : m.id) !== l && t(
|
|
79
|
+
a,
|
|
80
|
+
"APPROVED"
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
disabled: ((T = a == null ? void 0 : a.user) == null ? void 0 : T.id) === l,
|
|
84
|
+
children: /* @__PURE__ */ d(G, { className: "h-ico-lg w-ico-lg text-text-success" })
|
|
85
|
+
}
|
|
86
|
+
) }),
|
|
87
|
+
((k = a == null ? void 0 : a.user) == null ? void 0 : k.id) === l && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d("p", { children: "You cannot approve/reject your own correction request" }) })
|
|
88
|
+
] }) })
|
|
89
|
+
] })
|
|
90
|
+
] }) }, a.id);
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
J.displayName = "CorrectionList";
|
|
97
|
+
export {
|
|
98
|
+
J as CorrectionList
|
|
99
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AdminUser } from '../types';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface DashboardHeaderProps {
|
|
4
|
+
selectedMonth: string;
|
|
5
|
+
yearsList: string[];
|
|
6
|
+
isTodaySelected: boolean;
|
|
7
|
+
selectedAssociate: AdminUser | null;
|
|
8
|
+
users: AdminUser[];
|
|
9
|
+
userImages: Record<string, string>;
|
|
10
|
+
activeTimeFrame: string;
|
|
11
|
+
onMonthSelection: (monthYear: string) => void;
|
|
12
|
+
onTodayClick: () => void;
|
|
13
|
+
onSelectAssociate: (user: AdminUser | null) => void;
|
|
14
|
+
onTimeFrameChange: (id: string) => void;
|
|
15
|
+
onDateChange: (direction: 'prev' | 'next') => void;
|
|
16
|
+
}
|
|
17
|
+
export declare const DashboardHeader: React.ForwardRefExoticComponent<DashboardHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
//# sourceMappingURL=dashboard-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-header.d.ts","sourceRoot":"","sources":["../../../src/admin/dashboard/dashboard-header.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmB9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMzC,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,iBAAiB,EAAE,SAAS,GAAG,IAAI,CAAA;IACnC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;CACnD;AAMD,eAAO,MAAM,eAAe,6FAiK3B,CAAA"}
|