@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,10 @@
1
+ import { Adjustment } from '../types';
2
+ import * as React from 'react';
3
+ export interface ApprovedAdjustmentsProps {
4
+ adjustments: Adjustment[];
5
+ /** Current admin user ID — used to show "You" for self-approved items */
6
+ adminId: string;
7
+ }
8
+ declare const ApprovedAdjustments: React.ForwardRefExoticComponent<ApprovedAdjustmentsProps & React.RefAttributes<HTMLDivElement>>;
9
+ export { ApprovedAdjustments };
10
+ //# sourceMappingURL=approved-adjustments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approved-adjustments.d.ts","sourceRoot":"","sources":["../../../src/admin/adjustments/approved-adjustments.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAM1C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;CAChB;AAMD,QAAA,MAAM,mBAAmB,iGA4DxB,CAAA;AAID,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { formatDate as c } from "../utils/date-utils.js";
4
+ const i = p.forwardRef(
5
+ function({
6
+ adjustments: r,
7
+ adminId: o
8
+ }, t) {
9
+ return /* @__PURE__ */ e("div", { ref: t, className: "no-scrollbar w-full overflow-auto border border-border-subtle sm:rounded-ds-lg max-md:rounded-ds-none max-md:border-0", children: /* @__PURE__ */ e("div", { className: "bg-layer-02 pb-ds-06 pl-ds-05 pt-ds-03 md:p-ds-05", children: /* @__PURE__ */ e("div", { className: "no-scrollbar w-full overflow-x-auto overflow-y-auto", children: /* @__PURE__ */ s("div", { className: "min-w-[800px] max-md:w-[max-content]", children: [
10
+ /* @__PURE__ */ s("div", { className: "text-ds-sm font-semibold uppercase tracking-wider sticky top-0 grid grid-cols-[200px_160px_80px_1fr_1fr_1fr] gap-ds-05 py-ds-03 text-text-placeholder sm:px-ds-06", children: [
11
+ /* @__PURE__ */ e("div", { className: "p-ds-03 pl-ds-04", children: "User" }),
12
+ /* @__PURE__ */ e("div", { className: "p-ds-03 pl-ds-04", children: "Date" }),
13
+ /* @__PURE__ */ e("div", { className: "p-ds-03 text-center", children: "Days" }),
14
+ /* @__PURE__ */ e("div", { className: "p-ds-03 pl-ds-04", children: "Type" }),
15
+ /* @__PURE__ */ e("div", { className: "p-ds-03", children: "Reason" }),
16
+ /* @__PURE__ */ e("div", { className: "p-ds-03", children: "Approved By" })
17
+ ] }),
18
+ /* @__PURE__ */ e("div", { className: "text-ds-md no-scrollbar overflow-y-auto md:max-h-[414px] max-md:h-[calc(100dvh-366px)] max-md:max-h-[calc(100dvh-366px)] max-md:overflow-visible max-md:overflow-y-auto max-md:overflow-x-visible", children: r.length === 0 ? /* @__PURE__ */ e("div", { className: "flex justify-center p-ds-05 text-text-tertiary", children: "No approved adjustments found" }) : r.map((d) => {
19
+ var a, l;
20
+ return /* @__PURE__ */ s(
21
+ "div",
22
+ {
23
+ className: "grid grid-cols-[200px_160px_80px_1fr_1fr_1fr] gap-ds-05 bg-layer-02 py-ds-03 sm:px-ds-06",
24
+ children: [
25
+ /* @__PURE__ */ e("div", { className: "p-ds-03 pl-ds-04 text-text-secondary", children: ((a = d.user) == null ? void 0 : a.name) || "Unknown User" }),
26
+ /* @__PURE__ */ e("div", { className: "w-[160px] p-ds-03 text-text-secondary", children: c(new Date(d.createdAt)) }),
27
+ /* @__PURE__ */ e("div", { className: "w-[80px] p-ds-03 text-center text-text-secondary", children: d.numberOfDays }),
28
+ /* @__PURE__ */ e("div", { className: "max-w-[350px] p-ds-03 pl-ds-04 text-text-tertiary", children: d.type }),
29
+ /* @__PURE__ */ e("div", { className: "max-w-[350px] p-ds-03 text-text-secondary", children: d.reason || "-" }),
30
+ /* @__PURE__ */ e("div", { className: "p-ds-03 text-text-secondary", children: ((l = d.approver) == null ? void 0 : l.name) || (d.approvedBy === o ? "You" : "Unknown") })
31
+ ]
32
+ },
33
+ d.id
34
+ );
35
+ }) })
36
+ ] }) }) }) });
37
+ }
38
+ );
39
+ i.displayName = "ApprovedAdjustments";
40
+ export {
41
+ i as ApprovedAdjustments
42
+ };
@@ -0,0 +1,2 @@
1
+ export { ApprovedAdjustments, type ApprovedAdjustmentsProps, } from './approved-adjustments';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/adjustments/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const BreakAdminSkeleton: React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>;
3
+ //# sourceMappingURL=break-admin-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"break-admin-skeleton.d.ts","sourceRoot":"","sources":["../../../src/admin/break/break-admin-skeleton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,eAAO,MAAM,kBAAkB,sEAiE9B,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { Skeleton as s } from "@devalok/shilp-sutra/ui";
4
+ const m = r.forwardRef(
5
+ function(c, l) {
6
+ return /* @__PURE__ */ d("div", { ref: l, className: "z-base h-fit w-full max-w-layout-body overflow-hidden border-[1px] border-border-subtle bg-field sm:rounded-ds-lg", children: [
7
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-end bg-field px-ds-06 py-ds-05b", children: /* @__PURE__ */ e("header", { className: "flex items-center", children: /* @__PURE__ */ d("div", { className: "flex items-center gap-ds-04", children: [
8
+ /* @__PURE__ */ e(s, { className: "h-ds-sm-plus w-32 rounded-ds-md" }),
9
+ /* @__PURE__ */ e(s, { className: "h-ds-sm-plus w-32 rounded-ds-md" })
10
+ ] }) }) }),
11
+ /* @__PURE__ */ d("div", { className: "flex h-fit flex-col border-t-[1px] border-border-subtle bg-layer-02 shadow-transparent", children: [
12
+ /* @__PURE__ */ d("div", { className: "flex w-full gap-ds-03 border-b-[1px] border-border px-ds-06 pt-ds-03", children: [
13
+ /* @__PURE__ */ e(s, { className: "h-ds-md w-20" }),
14
+ /* @__PURE__ */ e(s, { className: "h-ds-md w-24" }),
15
+ /* @__PURE__ */ e(s, { className: "h-ds-md w-24" })
16
+ ] }),
17
+ /* @__PURE__ */ d("div", { className: "h-[400px] border-0 px-ds-06 py-ds-05", children: [
18
+ /* @__PURE__ */ d("div", { className: "mb-ds-05 ml-ds-06 grid grid-cols-6 items-center gap-ds-05 py-ds-03", children: [
19
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
20
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
21
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
22
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
23
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
24
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" })
25
+ ] }),
26
+ /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-05", children: Array.from({ length: 5 }).map((f, a) => /* @__PURE__ */ d(
27
+ "div",
28
+ {
29
+ className: "ml-ds-06 grid grid-cols-6 items-center gap-ds-05 rounded-ds-lg py-ds-03",
30
+ children: [
31
+ /* @__PURE__ */ d("div", { className: "flex items-center gap-ds-03", children: [
32
+ /* @__PURE__ */ e(s, { className: "h-ds-sm w-ds-sm rounded-ds-full bg-field" }),
33
+ /* @__PURE__ */ e(s, { className: "h-5 w-24 bg-field" })
34
+ ] }),
35
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
36
+ /* @__PURE__ */ e(s, { className: "h-5 w-16 bg-field" }),
37
+ /* @__PURE__ */ e(s, { className: "h-5 w-full bg-field" }),
38
+ /* @__PURE__ */ d("div", { className: "flex items-center gap-ds-03", children: [
39
+ /* @__PURE__ */ e(s, { className: "h-ds-xs w-ds-xs rounded-ds-full bg-field" }),
40
+ /* @__PURE__ */ e(s, { className: "h-5 w-16 bg-field" })
41
+ ] }),
42
+ /* @__PURE__ */ d("div", { className: "flex items-center justify-end gap-ds-03", children: [
43
+ /* @__PURE__ */ e(s, { className: "h-ds-sm w-ds-sm rounded-ds-full bg-field" }),
44
+ /* @__PURE__ */ e(s, { className: "h-ds-sm w-ds-sm rounded-ds-full bg-field" })
45
+ ] })
46
+ ]
47
+ },
48
+ a
49
+ )) })
50
+ ] })
51
+ ] })
52
+ ] });
53
+ }
54
+ );
55
+ m.displayName = "BreakAdminSkeleton";
56
+ export {
57
+ m as BreakAdminSkeleton
58
+ };
@@ -0,0 +1,79 @@
1
+ import { BreakAdminFilters } from './header';
2
+ import { AdminUser, BreakRequest, BreakBalanceData, RealtimeCallbacks } from '../types';
3
+ import * as React from 'react';
4
+ export interface BreakAdminProps {
5
+ /** Current admin user */
6
+ currentUser: Pick<AdminUser, 'id' | 'name' | 'role'>;
7
+ /** All breaks data */
8
+ breaks: BreakRequest[];
9
+ /** Pending break requests */
10
+ pendingRequests: BreakRequest[];
11
+ /** Pending cashout requests */
12
+ cashoutRequests?: BreakRequest[];
13
+ /** Break balance data for all users */
14
+ breakBalanceData: BreakBalanceData[];
15
+ /** Current selected user's break balance summary */
16
+ breakBalance?: {
17
+ remainingDays: number;
18
+ breakBalance: number;
19
+ } | null;
20
+ /** User images map */
21
+ userImages: Record<string, string>;
22
+ /** List of all users for the associate filter */
23
+ users: AdminUser[];
24
+ /** Whether data is still loading */
25
+ isLoading?: boolean;
26
+ /** Loading states for individual sections */
27
+ isLoadingBreaks?: boolean;
28
+ isLoadingRequests?: boolean;
29
+ isLoadingBalance?: boolean;
30
+ /** Existing breaks for overlap checking in edit dialog */
31
+ existingBreaks?: BreakRequest[];
32
+ /** Current filter values */
33
+ filters?: BreakAdminFilters;
34
+ /** Callback when filters change */
35
+ onFilterChange?: (filters: BreakAdminFilters) => void;
36
+ /** Called when admin approves a break/correction request */
37
+ onApproveRequest?: (requestId: string, comment?: string, isCorrection?: boolean, request?: BreakRequest) => void;
38
+ /** Called when admin rejects a break/correction request */
39
+ onRejectRequest?: (requestId: string, comment?: string, isCorrection?: boolean, request?: BreakRequest) => void;
40
+ /** Called when admin approves a cashout request */
41
+ onApproveCashout?: (requestId: string) => void;
42
+ /** Called when admin rejects a cashout request */
43
+ onRejectCashout?: (requestId: string) => void;
44
+ /** Called when refreshing all data */
45
+ onRefresh?: () => void;
46
+ /** Called to save edited break details */
47
+ onSaveBreak?: (data: {
48
+ requestId: string;
49
+ userId: string;
50
+ status: string;
51
+ adminComment: string;
52
+ startDate: string;
53
+ endDate: string;
54
+ isEditing: boolean;
55
+ }) => void;
56
+ /** Called to delete a break */
57
+ onDeleteBreak?: () => void;
58
+ /** Called to save edited break balance */
59
+ onSaveBalance?: (data: {
60
+ userId: string;
61
+ cashOutDays: number;
62
+ carryForward: number;
63
+ year: number;
64
+ }) => void;
65
+ /** Called to fetch month breaks for overlap checking */
66
+ onFetchMonthBreaks?: (month: number, year: number) => Promise<BreakRequest[]>;
67
+ realtimeCallbacks?: RealtimeCallbacks;
68
+ /** Children — when provided, renders compound sub-components instead of default layout */
69
+ children?: React.ReactNode;
70
+ }
71
+ export declare const BreakAdmin: React.ForwardRefExoticComponent<BreakAdminProps & React.RefAttributes<HTMLDivElement>> & {
72
+ Root: React.ForwardRefExoticComponent<BreakAdminProps & React.RefAttributes<HTMLDivElement>>;
73
+ Header: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
74
+ TabBar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
75
+ BreaksPanel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
76
+ RequestsPanel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
77
+ BalancePanel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
78
+ };
79
+ //# sourceMappingURL=break-admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"break-admin.d.ts","sourceRoot":"","sources":["../../../src/admin/break/break-admin.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import { jsxs as c, Fragment as T, jsx as e } from "react/jsx-runtime";
2
+ import * as B from "react";
3
+ import { useState as C, useMemo as se, useCallback as q, createContext as ie, useContext as le } from "react";
4
+ import { cn as u } from "@devalok/shilp-sutra/ui";
5
+ import { useToast as ce } from "@devalok/shilp-sutra/ui";
6
+ import { BreakBalance as de } from "./break-balance.js";
7
+ import { LeaveRequest as me } from "./leave-request.js";
8
+ import { Breaks as ue } from "./breaks.js";
9
+ import { BreakAdminHeader as fe } from "./header.js";
10
+ import { BreakAdminSkeleton as pe } from "./break-admin-skeleton.js";
11
+ const I = ie(null);
12
+ function A() {
13
+ const d = le(I);
14
+ if (!d)
15
+ throw new Error(
16
+ "BreakAdmin compound components must be used within <BreakAdmin>"
17
+ );
18
+ return d;
19
+ }
20
+ const S = B.forwardRef(
21
+ function({
22
+ currentUser: o,
23
+ breaks: s,
24
+ pendingRequests: t,
25
+ cashoutRequests: a = [],
26
+ breakBalanceData: n,
27
+ breakBalance: i,
28
+ userImages: l,
29
+ users: f,
30
+ isLoading: h = !1,
31
+ isLoadingBreaks: k = !1,
32
+ isLoadingRequests: v = !1,
33
+ isLoadingBalance: _ = !1,
34
+ existingBreaks: R,
35
+ filters: m,
36
+ onFilterChange: N,
37
+ onApproveRequest: P,
38
+ onRejectRequest: j,
39
+ onApproveCashout: xe,
40
+ onRejectCashout: be,
41
+ onRefresh: U,
42
+ onSaveBreak: Y,
43
+ onDeleteBreak: $,
44
+ onSaveBalance: z,
45
+ onFetchMonthBreaks: Q,
46
+ realtimeCallbacks: Be,
47
+ children: V
48
+ }, G) {
49
+ const [J, W] = C("breaks"), [y, w] = C(!1), [X, H] = C(
50
+ null
51
+ ), [Z, O] = C(null), { toast: b } = ce(), ee = se(
52
+ () => ({
53
+ selectedAssociate: null,
54
+ dateFilterStart: null,
55
+ dateFilterEnd: null,
56
+ currMonth: (/* @__PURE__ */ new Date()).getMonth(),
57
+ currYear: (/* @__PURE__ */ new Date()).getFullYear(),
58
+ isOpen: !1
59
+ }),
60
+ []
61
+ ), re = m || ee, te = q(
62
+ (p) => {
63
+ N && N(p);
64
+ },
65
+ [N]
66
+ ), ae = q(
67
+ async (p, x, g) => {
68
+ if (!y) {
69
+ if (!g && (p.metaKey || p.ctrlKey)) {
70
+ H(x);
71
+ return;
72
+ }
73
+ try {
74
+ w(!0);
75
+ const r = t.find((E) => E.id === x);
76
+ if (!r)
77
+ throw new Error("Request not found");
78
+ P && P(x, g, r.correction, r), b({
79
+ description: /* @__PURE__ */ c(T, { children: [
80
+ /* @__PURE__ */ c("span", { children: [
81
+ r.correction ? "Attendance correction" : "Break request",
82
+ " "
83
+ ] }),
84
+ /* @__PURE__ */ e("span", { style: { color: "var(--color-success-text)" }, children: "approved successfully" })
85
+ ] }),
86
+ variant: "default",
87
+ style: { marginBottom: "16px", border: "None" }
88
+ });
89
+ } catch (r) {
90
+ console.error("Error approving request:", r), b({
91
+ title: "Error",
92
+ description: r instanceof Error ? r.message : "Failed to approve request",
93
+ variant: "error"
94
+ });
95
+ } finally {
96
+ w(!1);
97
+ }
98
+ }
99
+ },
100
+ [y, t, P, b]
101
+ ), ne = q(
102
+ async (p, x, g) => {
103
+ if (!y) {
104
+ if (!g && (p.metaKey || p.ctrlKey)) {
105
+ O(x);
106
+ return;
107
+ }
108
+ try {
109
+ w(!0);
110
+ const r = t.find((E) => E.id === x);
111
+ if (!r)
112
+ throw new Error("Request not found");
113
+ j && j(x, g, r.correction, r), b({
114
+ description: /* @__PURE__ */ c(T, { children: [
115
+ /* @__PURE__ */ c("span", { children: [
116
+ r.correction ? "Attendance correction" : "Break request",
117
+ " "
118
+ ] }),
119
+ /* @__PURE__ */ e("span", { style: { color: "var(--color-error-text)" }, children: "rejected" })
120
+ ] }),
121
+ variant: "default",
122
+ style: { marginBottom: "16px", border: "None" }
123
+ });
124
+ } catch (r) {
125
+ console.error("Error rejecting request:", r), b({
126
+ title: "Error",
127
+ description: r instanceof Error ? r.message : "Failed to reject request",
128
+ variant: "error"
129
+ });
130
+ } finally {
131
+ w(!1);
132
+ }
133
+ }
134
+ },
135
+ [y, t, j, b]
136
+ );
137
+ if (h)
138
+ return /* @__PURE__ */ e(pe, {});
139
+ const oe = {
140
+ currentUser: o,
141
+ activeTab: J,
142
+ setActiveTab: W,
143
+ isProcessing: y,
144
+ breaks: s,
145
+ pendingRequests: t,
146
+ cashoutRequests: a,
147
+ breakBalanceData: n,
148
+ breakBalance: i,
149
+ userImages: l,
150
+ users: f,
151
+ existingBreaks: R,
152
+ filters: re,
153
+ handleFilterChange: te,
154
+ handleApproveRequest: ae,
155
+ handleRejectRequest: ne,
156
+ acceptedCommentBox: X,
157
+ rejectedCommentBox: Z,
158
+ setAcceptedCommentBox: H,
159
+ setRejectedCommentBox: O,
160
+ onRefresh: U,
161
+ onSaveBreak: Y,
162
+ onDeleteBreak: $,
163
+ onSaveBalance: z,
164
+ onFetchMonthBreaks: Q
165
+ };
166
+ return /* @__PURE__ */ e(I.Provider, { value: oe, children: /* @__PURE__ */ e(
167
+ "div",
168
+ {
169
+ ref: G,
170
+ className: "z-base flex w-full max-w-layout flex-col items-center justify-center md:pt-0",
171
+ children: /* @__PURE__ */ e("div", { className: "no-scrollbar w-full overflow-auto border border-border-subtle sm:rounded-ds-lg max-md:rounded-ds-none max-md:border-0", children: V ?? /* @__PURE__ */ c(T, { children: [
172
+ /* @__PURE__ */ e(F, {}),
173
+ /* @__PURE__ */ c("div", { className: "no-scrollbar flex h-fit min-w-[800px] flex-col border-t-[1px] border-border-subtle bg-layer-02 shadow-transparent max-lg:min-w-[100%] max-lg:overflow-x-auto", children: [
174
+ /* @__PURE__ */ e(K, {}),
175
+ /* @__PURE__ */ c("div", { className: "w-full border-0 max-lg:min-w-[800px]", children: [
176
+ /* @__PURE__ */ e(L, {}),
177
+ /* @__PURE__ */ e(M, {}),
178
+ /* @__PURE__ */ e(D, {})
179
+ ] })
180
+ ] })
181
+ ] }) })
182
+ }
183
+ ) });
184
+ }
185
+ );
186
+ S.displayName = "BreakAdmin";
187
+ const F = B.forwardRef(function({ className: o, ...s }, t) {
188
+ const {
189
+ filters: a,
190
+ handleFilterChange: n,
191
+ breakBalance: i,
192
+ userImages: l,
193
+ users: f
194
+ } = A();
195
+ return /* @__PURE__ */ e("div", { ref: t, className: u(o), ...s, children: /* @__PURE__ */ e(
196
+ fe,
197
+ {
198
+ filters: a,
199
+ onFilterChange: n,
200
+ breakBalance: i,
201
+ userImages: l,
202
+ users: f
203
+ }
204
+ ) });
205
+ });
206
+ F.displayName = "BreakAdmin.Header";
207
+ const K = B.forwardRef(function({ className: o, ...s }, t) {
208
+ const { activeTab: a, setActiveTab: n, pendingRequests: i, breakBalanceData: l } = A();
209
+ return /* @__PURE__ */ c(
210
+ "div",
211
+ {
212
+ ref: t,
213
+ className: u(
214
+ "flex w-full gap-ds-03 border-b-[1px] border-border px-ds-06 pt-ds-03 max-lg:min-w-[800px]",
215
+ o
216
+ ),
217
+ ...s,
218
+ children: [
219
+ /* @__PURE__ */ e(
220
+ "button",
221
+ {
222
+ className: u("text-ds-sm font-semibold uppercase tracking-wider mb-[-1px] px-ds-03 py-ds-04", a === "breaks" ? "text-text-primary border-b-[1px] border-interactive-hover" : "text-text-tertiary"),
223
+ onClick: () => n("breaks"),
224
+ children: "BREAKS"
225
+ }
226
+ ),
227
+ /* @__PURE__ */ c(
228
+ "button",
229
+ {
230
+ className: u("text-ds-sm font-semibold uppercase tracking-wider mb-[-1px] flex items-center gap-ds-02 px-ds-03 py-ds-04", a === "requests" ? "border-b-[1px] border-interactive-hover text-text-primary" : "text-text-tertiary"),
231
+ onClick: () => n("requests"),
232
+ children: [
233
+ "REQUESTS",
234
+ " ",
235
+ /* @__PURE__ */ e("span", { className: "text-interactive-hover", children: `(${i.length})` })
236
+ ]
237
+ }
238
+ ),
239
+ /* @__PURE__ */ c(
240
+ "button",
241
+ {
242
+ className: u("text-ds-sm font-semibold uppercase tracking-wider mb-[-1px] flex items-center gap-ds-02 px-ds-03 py-ds-04", a === "balance" ? "border-b-[1px] border-interactive-hover text-text-primary" : "text-text-tertiary"),
243
+ onClick: () => n("balance"),
244
+ children: [
245
+ "BALANCE",
246
+ " ",
247
+ /* @__PURE__ */ e("span", { className: "text-interactive-hover", children: `(${l.length})` })
248
+ ]
249
+ }
250
+ )
251
+ ]
252
+ }
253
+ );
254
+ });
255
+ K.displayName = "BreakAdmin.TabBar";
256
+ const L = B.forwardRef(function({ className: o, ...s }, t) {
257
+ const {
258
+ activeTab: a,
259
+ breaks: n,
260
+ userImages: i,
261
+ existingBreaks: l,
262
+ onFetchMonthBreaks: f,
263
+ onSaveBreak: h,
264
+ onDeleteBreak: k,
265
+ onRefresh: v
266
+ } = A();
267
+ return a !== "breaks" ? null : /* @__PURE__ */ e("div", { ref: t, className: u(o), ...s, children: /* @__PURE__ */ e(
268
+ ue,
269
+ {
270
+ breaks: n,
271
+ userImages: i,
272
+ existingBreaks: l,
273
+ onFetchMonthBreaks: f,
274
+ onSave: h,
275
+ onDelete: k,
276
+ onRefresh: v
277
+ }
278
+ ) });
279
+ });
280
+ L.displayName = "BreakAdmin.BreaksPanel";
281
+ const M = B.forwardRef(function({ className: o, ...s }, t) {
282
+ const {
283
+ activeTab: a,
284
+ currentUser: n,
285
+ pendingRequests: i,
286
+ userImages: l,
287
+ handleApproveRequest: f,
288
+ handleRejectRequest: h,
289
+ acceptedCommentBox: k,
290
+ rejectedCommentBox: v,
291
+ setAcceptedCommentBox: _,
292
+ setRejectedCommentBox: R
293
+ } = A();
294
+ return a !== "requests" ? null : /* @__PURE__ */ e(
295
+ "div",
296
+ {
297
+ ref: t,
298
+ className: u(
299
+ /* intentional: h-[400px] is the fixed panel height for break tab content areas; mobile uses dvh for browser chrome */
300
+ "no-scrollbar flex h-[400px] flex-col gap-ds-02 overflow-y-auto border-t border-t-border px-ds-06 pb-ds-02 pt-ds-02 max-md:h-[calc(100dvh-317px)] max-md:border-0",
301
+ o
302
+ ),
303
+ ...s,
304
+ children: i.map((m) => /* @__PURE__ */ e(
305
+ me,
306
+ {
307
+ request: m,
308
+ userImages: l,
309
+ handleRejectRequest: h,
310
+ handleApproveRequest: f,
311
+ commentBoxOpen: k === m.id || v === m.id,
312
+ onCommentBoxClose: () => {
313
+ _(null), R(null);
314
+ },
315
+ clickedAction: k === m.id ? "approve" : v === m.id ? "reject" : null,
316
+ userId: n.id
317
+ },
318
+ m.id
319
+ ))
320
+ }
321
+ );
322
+ });
323
+ M.displayName = "BreakAdmin.RequestsPanel";
324
+ const D = B.forwardRef(function({ className: o, ...s }, t) {
325
+ const { activeTab: a, breakBalanceData: n, userImages: i, onSaveBalance: l } = A();
326
+ return a !== "balance" ? null : /* @__PURE__ */ e("div", { ref: t, className: u(o), ...s, children: /* @__PURE__ */ e(
327
+ de,
328
+ {
329
+ breakBalanceData: n,
330
+ userImages: i,
331
+ onSaveBalance: l
332
+ }
333
+ ) });
334
+ });
335
+ D.displayName = "BreakAdmin.BalancePanel";
336
+ const Ne = Object.assign(S, {
337
+ Root: S,
338
+ Header: F,
339
+ TabBar: K,
340
+ BreaksPanel: L,
341
+ RequestsPanel: M,
342
+ BalancePanel: D
343
+ });
344
+ export {
345
+ Ne as BreakAdmin
346
+ };
@@ -0,0 +1,14 @@
1
+ import { BreakBalanceData } from '../types';
2
+ import * as React from 'react';
3
+ export interface BreakBalanceProps {
4
+ breakBalanceData: BreakBalanceData[];
5
+ userImages: Record<string, string>;
6
+ onSaveBalance?: (data: {
7
+ userId: string;
8
+ cashOutDays: number;
9
+ carryForward: number;
10
+ year: number;
11
+ }) => void;
12
+ }
13
+ export declare const BreakBalance: React.ForwardRefExoticComponent<BreakBalanceProps & React.RefAttributes<HTMLDivElement>>;
14
+ //# sourceMappingURL=break-balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"break-balance.d.ts","sourceRoot":"","sources":["../../../src/admin/break/break-balance.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAMhD,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,gBAAgB,EAAE,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;KACb,KAAK,IAAI,CAAA;CACX;AAED,eAAO,MAAM,YAAY,0FA6CxB,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { Avatar as o, AvatarImage as f, AvatarFallback as u } from "@devalok/shilp-sutra/ui";
4
+ const h = p.forwardRef(
5
+ function({
6
+ breakBalanceData: m,
7
+ userImages: n,
8
+ onSaveBalance: w
9
+ }, x) {
10
+ return /* @__PURE__ */ s("div", { ref: x, className: "m-0 flex h-[400px] flex-col items-start justify-start p-0 max-md:h-auto", children: [
11
+ /* @__PURE__ */ s("div", { className: "m-0 mx-[4%] mb-ds-05 mt-ds-04 flex w-[92%] items-start justify-start gap-ds-03 p-0 text-text-placeholder", children: [
12
+ /* @__PURE__ */ e("div", { className: "text-ds-sm font-semibold uppercase tracking-wider w-[16.4%] min-w-[120px] px-ds-04 py-ds-03 text-text-tertiary", children: "NAME" }),
13
+ /* @__PURE__ */ e("div", { className: "text-ds-sm font-semibold uppercase tracking-wider w-[16.4%] px-ds-04 py-ds-03 text-text-tertiary", children: "Total Balance" })
14
+ ] }),
15
+ /* @__PURE__ */ e("div", { className: "no-scrollbar mx-[4%] flex w-[92%] flex-col gap-ds-05 overflow-y-auto max-md:h-[calc(100dvh-373px)]", children: m.map((a) => {
16
+ var t, l, r, d, c, i;
17
+ return /* @__PURE__ */ s(
18
+ "div",
19
+ {
20
+ className: "flex w-full flex-row items-center justify-start gap-ds-03 !border-0 text-left hover:bg-field",
21
+ children: [
22
+ /* @__PURE__ */ s("div", { className: "flex w-1/6 min-w-[120px] items-center gap-ds-03 p-ds-04", children: [
23
+ /* @__PURE__ */ s(o, { className: "h-ds-xs-plus w-ds-xs-plus", children: [
24
+ /* @__PURE__ */ e(f, { src: n[a.userId], alt: ((t = a.user) == null ? void 0 : t.name) || "" }),
25
+ /* @__PURE__ */ e(u, { children: ((r = (l = a.user) == null ? void 0 : l.name) == null ? void 0 : r[0]) || "U" })
26
+ ] }),
27
+ /* @__PURE__ */ e("div", { className: "w-[calc(100%-36px)]", children: /* @__PURE__ */ e("span", { className: "text-ds-md block w-full cursor-default truncate text-text-primary", children: ((d = a.user) == null ? void 0 : d.firstName) ?? ((i = (c = a.user) == null ? void 0 : c.name) == null ? void 0 : i.split(" ")[0]) }) })
28
+ ] }),
29
+ /* @__PURE__ */ e("div", { className: "text-ds-md w-[16.4%] p-ds-04 px-ds-04 text-interactive", children: a.totalDays })
30
+ ]
31
+ },
32
+ a.id
33
+ );
34
+ }) })
35
+ ] });
36
+ }
37
+ );
38
+ h.displayName = "BreakBalance";
39
+ export {
40
+ h as BreakBalance
41
+ };
@@ -0,0 +1,21 @@
1
+ import { BreakRequest } from '../types';
2
+ import * as React from 'react';
3
+ export interface BreaksProps {
4
+ breaks: BreakRequest[];
5
+ userImages: Record<string, string>;
6
+ existingBreaks?: BreakRequest[];
7
+ onFetchMonthBreaks?: (month: number, year: number) => Promise<BreakRequest[]>;
8
+ onSave?: (data: {
9
+ requestId: string;
10
+ userId: string;
11
+ status: string;
12
+ adminComment: string;
13
+ startDate: string;
14
+ endDate: string;
15
+ isEditing: boolean;
16
+ }) => void;
17
+ onDelete?: () => void;
18
+ onRefresh?: () => void;
19
+ }
20
+ export declare const Breaks: React.ForwardRefExoticComponent<BreaksProps & React.RefAttributes<HTMLDivElement>>;
21
+ //# sourceMappingURL=breaks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaks.d.ts","sourceRoot":"","sources":["../../../src/admin/break/breaks.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;IAC/B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC7E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,OAAO,CAAA;KACnB,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,eAAO,MAAM,MAAM,oFAiIlB,CAAA"}