@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,35 @@
1
+ /**
2
+ * Check whether `dateStr` falls within [startStr, endStr] (inclusive).
3
+ */
4
+ export declare function isDateInRange(dateStr: string, startStr: string, endStr: string): boolean;
5
+ /**
6
+ * True when the first date is the same day as or before the second date.
7
+ */
8
+ export declare function isDateSameOrBefore(dateStr1: string, dateStr2: string): boolean;
9
+ /**
10
+ * True when the first date is the same day as or after the second date.
11
+ */
12
+ export declare function isDateSameOrAfter(dateStr1: string, dateStr2: string): boolean;
13
+ /**
14
+ * True when the first date is strictly after the second date.
15
+ */
16
+ export declare function isDateAfter(dateStr1: string, dateStr2: string): boolean;
17
+ /**
18
+ * Check whether a new date range overlaps with any existing range,
19
+ * excluding the range identified by `excludeId`.
20
+ */
21
+ export declare function checkDateOverlap(newStartDate: string, newEndDate: string, existingRanges: Array<{
22
+ id: string;
23
+ startDate: string;
24
+ endDate: string;
25
+ }>, excludeId: string): boolean;
26
+ /**
27
+ * Check whether a specific date falls inside any existing break range,
28
+ * excluding the range identified by `excludeId`.
29
+ */
30
+ export declare function isBreakDay(dateStr: string, existingRanges: Array<{
31
+ id: string;
32
+ startDate: string;
33
+ endDate: string;
34
+ }>, excludeId: string): boolean;
35
+ //# sourceMappingURL=date-range-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-utils.d.ts","sourceRoot":"","sources":["../../../src/admin/utils/date-range-utils.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,SAAS,EAAE,MAAM,GAChB,OAAO,CAeT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACzE,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT"}
@@ -0,0 +1,36 @@
1
+ import { format as c, parseISO as s, isWithinInterval as l, isAfter as y, isEqual as u, isBefore as m } from "date-fns";
2
+ function d(e, n, r) {
3
+ const t = s(e), o = s(n), a = s(r);
4
+ return l(t, { start: o, end: a });
5
+ }
6
+ function p(e, n) {
7
+ const r = s(e), t = s(n);
8
+ return m(r, t) || u(r, t);
9
+ }
10
+ function O(e, n) {
11
+ const r = s(e), t = s(n);
12
+ return y(r, t) || u(r, t);
13
+ }
14
+ function b(e, n) {
15
+ return y(s(e), s(n));
16
+ }
17
+ function S(e, n, r, t) {
18
+ return r.some((o) => {
19
+ const a = c(new Date(o.startDate), "yyyy-MM-dd"), i = c(new Date(o.endDate), "yyyy-MM-dd"), f = d(e, a, i), D = d(n, a, i), M = p(e, a) && O(n, i);
20
+ return o.id !== t && (f || D || M);
21
+ });
22
+ }
23
+ function A(e, n, r) {
24
+ return n.some((t) => {
25
+ const o = c(new Date(t.startDate), "yyyy-MM-dd"), a = c(new Date(t.endDate), "yyyy-MM-dd");
26
+ return t.id !== r && d(e, o, a);
27
+ });
28
+ }
29
+ export {
30
+ S as checkDateOverlap,
31
+ A as isBreakDay,
32
+ b as isDateAfter,
33
+ d as isDateInRange,
34
+ O as isDateSameOrAfter,
35
+ p as isDateSameOrBefore
36
+ };
@@ -0,0 +1,29 @@
1
+ export declare function formatDateIST(date: Date | string, options?: Intl.DateTimeFormatOptions): string;
2
+ export declare function formatTimeIST(date: Date | string, options?: Intl.DateTimeFormatOptions): string;
3
+ export declare function formatDate(date: Date | string): string;
4
+ export declare function formatOptionalDate(date: Date | string | '-'): string;
5
+ export declare function formatDateWithWeekday(date: Date): string;
6
+ export declare function getDaySuffix(day: number): string;
7
+ export declare function isSameDay(date1: Date, date2: Date): boolean;
8
+ export interface WeekDay {
9
+ day: string;
10
+ date: number;
11
+ fullDate: Date;
12
+ isToday: boolean;
13
+ isActive: boolean;
14
+ hasBreak?: boolean;
15
+ isAbsent?: boolean;
16
+ }
17
+ export declare function getWeekDays(currentDate: string | Date, selectedDate: string | Date): WeekDay[];
18
+ export interface MonthDay {
19
+ day: string;
20
+ date: number;
21
+ fullDate: Date;
22
+ isToday: boolean;
23
+ isActive: boolean;
24
+ isPadding: boolean;
25
+ }
26
+ export declare function getMonthDays(currentDate: Date | string, selectedDate: Date | string): MonthDay[];
27
+ export declare function getStartOfDay(date?: Date): Date;
28
+ export declare function getEndOfDay(date?: Date): Date;
29
+ //# sourceMappingURL=date-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.d.ts","sourceRoot":"","sources":["../../../src/admin/utils/date-utils.ts"],"names":[],"mappings":"AAyBA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM,CAKR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GACnC,MAAM,CAKR;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAWtD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAGpE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAOxD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYhD;AAMD,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAG3D;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,EAAE,CAeX;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,IAAI,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,IAAI,GAAG,MAAM,EAC1B,YAAY,EAAE,IAAI,GAAG,MAAM,GAC1B,QAAQ,EAAE,CAwDZ;AAMD,wBAAgB,aAAa,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEzD"}
@@ -0,0 +1,118 @@
1
+ import { endOfDay as S, startOfMonth as T, getDaysInMonth as p, subMonths as O, isSameDay as o, format as l, addMonths as $, startOfDay as A, startOfWeek as L, addDays as k } from "date-fns";
2
+ const d = "Asia/Kolkata", g = "en-IN";
3
+ function I(t, e) {
4
+ return new Date(t).toLocaleDateString(g, {
5
+ timeZone: d,
6
+ ...e
7
+ });
8
+ }
9
+ function U(t, e) {
10
+ return new Date(t).toLocaleTimeString(g, {
11
+ timeZone: d,
12
+ ...e
13
+ });
14
+ }
15
+ function w(t) {
16
+ return (t instanceof Date ? t : new Date(t)).toLocaleDateString(g, {
17
+ day: "2-digit",
18
+ month: "short",
19
+ year: "2-digit",
20
+ timeZone: d
21
+ }).replace(",", "").replace(/(\d{2})$/, "’$1");
22
+ }
23
+ function F(t) {
24
+ return t === "-" ? "-" : w(t);
25
+ }
26
+ function P(t) {
27
+ const e = t.toLocaleString(g, {
28
+ weekday: "long",
29
+ timeZone: d
30
+ });
31
+ return `${w(t)}, ${e}`;
32
+ }
33
+ function Z(t) {
34
+ if (t >= 11 && t <= 13) return `${t}th`;
35
+ switch (t % 10) {
36
+ case 1:
37
+ return `${t}st`;
38
+ case 2:
39
+ return `${t}nd`;
40
+ case 3:
41
+ return `${t}rd`;
42
+ default:
43
+ return `${t}th`;
44
+ }
45
+ }
46
+ function W(t, e) {
47
+ return !(t instanceof Date) || !(e instanceof Date) ? !1 : o(t, e);
48
+ }
49
+ function x(t, e) {
50
+ const r = L(new Date(t), { weekStartsOn: 0 }), i = /* @__PURE__ */ new Date(), c = new Date(e);
51
+ return Array.from({ length: 7 }, (u, y) => {
52
+ const s = k(r, y);
53
+ return {
54
+ day: l(s, "EEE").toUpperCase(),
55
+ date: s.getDate(),
56
+ fullDate: s,
57
+ isToday: o(s, i),
58
+ isActive: o(s, c)
59
+ };
60
+ });
61
+ }
62
+ function Y(t, e) {
63
+ const r = new Date(t), i = new Date(e), c = /* @__PURE__ */ new Date(), u = T(r), y = u.getDay(), s = p(r), f = [], h = O(u, 1), E = p(h);
64
+ for (let n = y - 1; n >= 0; n--) {
65
+ const a = E - n, D = new Date(h.getFullYear(), h.getMonth(), a);
66
+ f.push({
67
+ day: l(D, "EEE").toUpperCase(),
68
+ date: D.getDate(),
69
+ fullDate: D,
70
+ isToday: o(D, c),
71
+ isActive: o(D, i),
72
+ isPadding: !0
73
+ });
74
+ }
75
+ for (let n = 1; n <= s; n++) {
76
+ const a = new Date(r.getFullYear(), r.getMonth(), n);
77
+ f.push({
78
+ day: l(a, "EEE").toUpperCase(),
79
+ date: n,
80
+ fullDate: a,
81
+ isToday: o(a, c),
82
+ isActive: o(a, i),
83
+ isPadding: !1
84
+ });
85
+ }
86
+ const M = (7 - f.length % 7) % 7, m = $(u, 1);
87
+ for (let n = 1; n <= M; n++) {
88
+ const a = new Date(m.getFullYear(), m.getMonth(), n);
89
+ f.push({
90
+ day: l(a, "EEE").toUpperCase(),
91
+ date: n,
92
+ fullDate: a,
93
+ isToday: o(a, c),
94
+ isActive: o(a, i),
95
+ isPadding: !0
96
+ });
97
+ }
98
+ return f;
99
+ }
100
+ function _(t = /* @__PURE__ */ new Date()) {
101
+ return A(t);
102
+ }
103
+ function N(t = /* @__PURE__ */ new Date()) {
104
+ return S(t);
105
+ }
106
+ export {
107
+ w as formatDate,
108
+ I as formatDateIST,
109
+ P as formatDateWithWeekday,
110
+ F as formatOptionalDate,
111
+ U as formatTimeIST,
112
+ Z as getDaySuffix,
113
+ N as getEndOfDay,
114
+ Y as getMonthDays,
115
+ _ as getStartOfDay,
116
+ x as getWeekDays,
117
+ W as isSameDay
118
+ };
@@ -0,0 +1,3 @@
1
+ export declare function removeEmojiAtStart(text: string): string;
2
+ export declare function removeAllEmojis(text?: string): string;
3
+ //# sourceMappingURL=emoji-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji-utils.d.ts","sourceRoot":"","sources":["../../../src/admin/utils/emoji-utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAOrD"}
@@ -0,0 +1,16 @@
1
+ function r(e) {
2
+ return e.replace(
3
+ /^[\p{Emoji_Presentation}\p{Extended_Pictographic}\u200B-\u200D]+/gu,
4
+ ""
5
+ );
6
+ }
7
+ function o(e) {
8
+ return (e == null ? void 0 : e.replace(
9
+ /[\p{Emoji_Presentation}\p{Extended_Pictographic}\u200B-\u200D]+/gu,
10
+ ""
11
+ )) ?? "";
12
+ }
13
+ export {
14
+ o as removeAllEmojis,
15
+ r as removeEmojiAtStart
16
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * renderAdjustmentType is a pure render utility function, not a React component.
3
+ * It maps an AdjustmentType key to a human-readable label wrapped in a <div>.
4
+ *
5
+ * This intentionally does not follow the component checklist (forwardRef,
6
+ * displayName, props interface) because it is invoked as a function
7
+ * — e.g. renderAdjustmentType('CASHOUT') — not rendered as JSX.
8
+ */
9
+ export declare const AdjustmentType: {
10
+ readonly YEARLY_BALANCE: "YEARLY_BALANCE";
11
+ readonly CARRY_FORWARD: "CARRY_FORWARD";
12
+ readonly CASHOUT: "CASHOUT";
13
+ readonly OTHER: "OTHER";
14
+ };
15
+ declare function renderAdjustmentType(type: keyof typeof AdjustmentType): JSX.Element;
16
+ export default renderAdjustmentType;
17
+ //# sourceMappingURL=render-adjustment-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-adjustment-type.d.ts","sourceRoot":"","sources":["../../../src/admin/utils/render-adjustment-type.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAA;AASV,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,OAAO,cAAc,GAAG,GAAG,CAAC,OAAO,CAE5E;AAED,eAAe,oBAAoB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { jsx as R } from "react/jsx-runtime";
2
+ const t = {
3
+ YEARLY_BALANCE: "YEARLY_BALANCE",
4
+ CARRY_FORWARD: "CARRY_FORWARD",
5
+ CASHOUT: "CASHOUT",
6
+ OTHER: "OTHER"
7
+ }, r = {
8
+ YEARLY_BALANCE: "Yearly Balance",
9
+ CARRY_FORWARD: "Carry Forward",
10
+ CASHOUT: "Cashout",
11
+ OTHER: "Other"
12
+ };
13
+ function E(A) {
14
+ return /* @__PURE__ */ R("div", { children: r[A] });
15
+ }
16
+ export {
17
+ t as AdjustmentType,
18
+ E as default
19
+ };
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare function renderStatus(status: string, correction?: boolean): React.ReactNode;
3
+ //# sourceMappingURL=render-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-status.d.ts","sourceRoot":"","sources":["../../../src/admin/utils/render-status.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA4B9B,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,OAAO,GACnB,KAAK,CAAC,SAAS,CAYjB"}
@@ -0,0 +1,21 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import { Badge as d } from "@devalok/shilp-sutra/ui";
3
+ const r = {
4
+ APPROVED: { text: "Corrected", variant: "accent" },
5
+ PENDING: { text: "Pending", variant: "warning" },
6
+ REJECTED: { text: "Denied", variant: "error" },
7
+ MISSING: { text: "Missed", variant: "error" }
8
+ }, e = {
9
+ APPROVED: { text: "Approved", variant: "success" },
10
+ PENDING: { text: "Pending", variant: "warning" },
11
+ REJECTED: { text: "Denied", variant: "error" },
12
+ CANCELLED: { text: "Redacted", variant: "error" },
13
+ MISSING: { text: "Missed", variant: "error" }
14
+ };
15
+ function v(n, t) {
16
+ const a = t ? r : e, i = t ? r.REJECTED : e.REJECTED, { text: E, variant: o } = a[n] || i;
17
+ return /* @__PURE__ */ s(d, { variant: o, size: "sm", children: E });
18
+ }
19
+ export {
20
+ v as renderStatus
21
+ };
@@ -0,0 +1,20 @@
1
+ import { BoardTask } from './task-card';
2
+ import * as React from 'react';
3
+ export interface BoardColumnData {
4
+ id: string;
5
+ name: string;
6
+ isClientVisible?: boolean;
7
+ tasks: BoardTask[];
8
+ }
9
+ export interface BoardColumnProps {
10
+ column: BoardColumnData;
11
+ index: number;
12
+ isOverlay?: boolean;
13
+ onAddTask: (columnId: string, title: string) => void;
14
+ onClickTask?: (taskId: string) => void;
15
+ onRenameColumn?: (columnId: string, name: string) => void;
16
+ onDeleteColumn?: (columnId: string) => void;
17
+ onToggleVisibility?: (columnId: string, visible: boolean) => void;
18
+ }
19
+ export declare const BoardColumn: React.ForwardRefExoticComponent<BoardColumnProps & React.RefAttributes<HTMLDivElement>>;
20
+ //# sourceMappingURL=board-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-column.d.ts","sourceRoot":"","sources":["../../src/board/board-column.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAMtD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAqBD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAClE;AAED,eAAO,MAAM,WAAW,yFA2PvB,CAAA"}
@@ -0,0 +1,233 @@
1
+ import { jsxs as r, jsx as e, Fragment as N } from "react/jsx-runtime";
2
+ import * as P from "react";
3
+ import { useState as n, useRef as v } from "react";
4
+ import { useDroppable as H } from "@dnd-kit/core";
5
+ import { SortableContext as U, verticalListSortingStrategy as _ } from "@dnd-kit/sortable";
6
+ import { cn as w } from "@devalok/shilp-sutra/ui";
7
+ import { Button as m } from "@devalok/shilp-sutra/ui";
8
+ import { Input as k } from "@devalok/shilp-sutra/ui";
9
+ import { DropdownMenu as $, DropdownMenuTrigger as q, DropdownMenuContent as G, DropdownMenuItem as u, DropdownMenuSeparator as J } from "@devalok/shilp-sutra/ui";
10
+ import { IconEye as C, IconPlus as I, IconDots as Q, IconPencil as V, IconEyeOff as W, IconTrash as X } from "@tabler/icons-react";
11
+ import { TaskCard as Y } from "./task-card.js";
12
+ const E = [
13
+ "border-l-category-cyan",
14
+ "border-l-category-amber",
15
+ "border-l-category-teal",
16
+ "border-l-category-indigo",
17
+ "border-l-category-orange",
18
+ "border-l-category-emerald",
19
+ "border-l-category-slate",
20
+ "border-l-accent"
21
+ ], Z = P.forwardRef(
22
+ function({
23
+ column: s,
24
+ index: D,
25
+ isOverlay: S,
26
+ onAddTask: A,
27
+ onClickTask: B,
28
+ onRenameColumn: h,
29
+ onDeleteColumn: f,
30
+ onToggleVisibility: p
31
+ }, M) {
32
+ const [b, a] = n(!1), [i, o] = n(""), [T, d] = n(!1), [c, l] = n(s.name), x = v(null), R = v(null), { setNodeRef: j, isOver: z } = H({
33
+ id: `column-${s.id}`,
34
+ data: {
35
+ type: "column",
36
+ column: s
37
+ }
38
+ }), K = s.tasks.map((t) => t.id), F = E[D % E.length], g = () => {
39
+ i.trim() && (A(s.id, i.trim()), o(""), a(!1));
40
+ }, O = (t) => {
41
+ t.key === "Enter" && g(), t.key === "Escape" && (o(""), a(!1));
42
+ }, y = () => {
43
+ c.trim() && c.trim() !== s.name && (h == null || h(s.id, c.trim())), d(!1);
44
+ }, L = (t) => {
45
+ t.key === "Enter" && y(), t.key === "Escape" && (l(s.name), d(!1));
46
+ };
47
+ return /* @__PURE__ */ r(
48
+ "div",
49
+ {
50
+ ref: M,
51
+ className: w(
52
+ /* intentional: board column fixed width — matches add-column button */
53
+ "flex h-full w-[300px] flex-shrink-0 flex-col rounded-ds-xl border-l-[3px] bg-layer-01 shadow-01",
54
+ F,
55
+ S && "shadow-04"
56
+ ),
57
+ children: [
58
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-03 px-ds-04 py-ds-04", children: [
59
+ T ? /* @__PURE__ */ e(
60
+ k,
61
+ {
62
+ ref: R,
63
+ value: c,
64
+ onChange: (t) => l(t.target.value),
65
+ onBlur: y,
66
+ onKeyDown: L,
67
+ className: "h-ds-xs-plus text-ds-md font-semibold",
68
+ autoFocus: !0
69
+ }
70
+ ) : /* @__PURE__ */ e(
71
+ "h3",
72
+ {
73
+ className: "text-ds-md font-semibold text-text-primary truncate",
74
+ onDoubleClick: () => {
75
+ l(s.name), d(!0);
76
+ },
77
+ children: s.name
78
+ }
79
+ ),
80
+ /* @__PURE__ */ e("span", { className: "flex h-5 min-w-[20px] items-center justify-center rounded-ds-full bg-field px-ds-02b text-ds-sm font-medium text-text-tertiary", children: s.tasks.length }),
81
+ s.isClientVisible && /* @__PURE__ */ e(
82
+ C,
83
+ {
84
+ className: "h-3 w-3 text-text-tertiary",
85
+ "aria-label": "Visible to client"
86
+ }
87
+ ),
88
+ /* @__PURE__ */ e("div", { className: "flex-1" }),
89
+ /* @__PURE__ */ e(
90
+ m,
91
+ {
92
+ variant: "ghost",
93
+ size: "icon-md",
94
+ className: "h-ds-xs w-ds-xs opacity-0 group-hover:opacity-100 hover:bg-interactive-subtle hover:text-interactive transition-opacity",
95
+ onClick: () => {
96
+ a(!0), setTimeout(() => {
97
+ var t;
98
+ return (t = x.current) == null ? void 0 : t.focus();
99
+ }, 50);
100
+ },
101
+ children: /* @__PURE__ */ e(I, { className: "h-ico-sm w-ico-sm" })
102
+ }
103
+ ),
104
+ /* @__PURE__ */ r($, { children: [
105
+ /* @__PURE__ */ e(q, { asChild: !0, children: /* @__PURE__ */ e(
106
+ m,
107
+ {
108
+ variant: "ghost",
109
+ size: "icon-md",
110
+ className: "h-ds-xs w-ds-xs opacity-0 group-hover:opacity-100 transition-opacity",
111
+ children: /* @__PURE__ */ e(Q, { className: "h-ico-sm w-ico-sm" })
112
+ }
113
+ ) }),
114
+ /* @__PURE__ */ r(G, { align: "end", className: "w-44", children: [
115
+ /* @__PURE__ */ r(
116
+ u,
117
+ {
118
+ onClick: () => {
119
+ l(s.name), d(!0);
120
+ },
121
+ children: [
122
+ /* @__PURE__ */ e(V, { className: "mr-ds-03 h-ico-sm w-ico-sm" }),
123
+ "Rename"
124
+ ]
125
+ }
126
+ ),
127
+ /* @__PURE__ */ e(
128
+ u,
129
+ {
130
+ onClick: () => p == null ? void 0 : p(s.id, !s.isClientVisible),
131
+ children: s.isClientVisible ? /* @__PURE__ */ r(N, { children: [
132
+ /* @__PURE__ */ e(W, { className: "mr-ds-03 h-ico-sm w-ico-sm" }),
133
+ "Hide from client"
134
+ ] }) : /* @__PURE__ */ r(N, { children: [
135
+ /* @__PURE__ */ e(C, { className: "mr-ds-03 h-ico-sm w-ico-sm" }),
136
+ "Show to client"
137
+ ] })
138
+ }
139
+ ),
140
+ /* @__PURE__ */ e(J, {}),
141
+ /* @__PURE__ */ r(
142
+ u,
143
+ {
144
+ className: "text-error focus:text-error",
145
+ onClick: () => f == null ? void 0 : f(s.id),
146
+ children: [
147
+ /* @__PURE__ */ e(X, { className: "mr-ds-03 h-ico-sm w-ico-sm" }),
148
+ "Delete column"
149
+ ]
150
+ }
151
+ )
152
+ ] })
153
+ ] })
154
+ ] }),
155
+ /* @__PURE__ */ r(
156
+ "div",
157
+ {
158
+ ref: j,
159
+ className: w(
160
+ "no-scrollbar flex flex-1 flex-col gap-ds-03 overflow-y-auto px-ds-03 pb-ds-03 transition-colors duration-fast-02 ease-productive-standard",
161
+ z && "bg-interactive-subtle/50"
162
+ ),
163
+ children: [
164
+ /* @__PURE__ */ e(U, { items: K, strategy: _, children: s.tasks.map((t) => /* @__PURE__ */ e(Y, { task: t, onClickTask: B }, t.id)) }),
165
+ s.tasks.length === 0 && !b && /* @__PURE__ */ e("div", { className: "flex flex-1 items-center justify-center py-ds-07", children: /* @__PURE__ */ e("p", { className: "text-ds-sm text-text-placeholder", children: "No tasks" }) })
166
+ ]
167
+ }
168
+ ),
169
+ b ? /* @__PURE__ */ r("div", { className: "border-t border-border-subtle p-ds-03", children: [
170
+ /* @__PURE__ */ e(
171
+ k,
172
+ {
173
+ ref: x,
174
+ value: i,
175
+ onChange: (t) => o(t.target.value),
176
+ onKeyDown: O,
177
+ onBlur: () => {
178
+ i.trim() || a(!1);
179
+ },
180
+ placeholder: "Task title...",
181
+ className: "h-ds-sm text-ds-md",
182
+ autoFocus: !0
183
+ }
184
+ ),
185
+ /* @__PURE__ */ r("div", { className: "mt-ds-02b flex items-center gap-ds-02", children: [
186
+ /* @__PURE__ */ e(
187
+ m,
188
+ {
189
+ size: "sm",
190
+ className: "h-ds-xs-plus bg-interactive hover:bg-interactive-hover text-text-on-color text-ds-sm",
191
+ onClick: g,
192
+ disabled: !i.trim(),
193
+ children: "Add"
194
+ }
195
+ ),
196
+ /* @__PURE__ */ e(
197
+ m,
198
+ {
199
+ variant: "ghost",
200
+ size: "sm",
201
+ className: "h-ds-xs-plus text-ds-sm",
202
+ onClick: () => {
203
+ o(""), a(!1);
204
+ },
205
+ children: "Cancel"
206
+ }
207
+ )
208
+ ] })
209
+ ] }) : /* @__PURE__ */ r(
210
+ "button",
211
+ {
212
+ onClick: () => {
213
+ a(!0), setTimeout(() => {
214
+ var t;
215
+ return (t = x.current) == null ? void 0 : t.focus();
216
+ }, 50);
217
+ },
218
+ className: "flex items-center gap-ds-02b border-t border-border-subtle px-ds-04 py-ds-03 text-ds-sm text-text-placeholder transition-colors hover:bg-field hover:text-text-tertiary",
219
+ children: [
220
+ /* @__PURE__ */ e(I, { className: "h-3 w-3" }),
221
+ "Add task"
222
+ ]
223
+ }
224
+ )
225
+ ]
226
+ }
227
+ );
228
+ }
229
+ );
230
+ Z.displayName = "BoardColumn";
231
+ export {
232
+ Z as BoardColumn
233
+ };
@@ -0,0 +1,4 @@
1
+ export { KanbanBoard, type BoardData, type KanbanBoardProps } from './kanban-board';
2
+ export { BoardColumn, type BoardColumnData, type BoardColumnProps } from './board-column';
3
+ export { TaskCard, TaskCardOverlay, type BoardTask, type TaskCardProps, type TaskCardOverlayProps } from './task-card';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/board/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { KanbanBoard as o } from "./kanban-board.js";
2
+ import { BoardColumn as e } from "./board-column.js";
3
+ import { TaskCard as f, TaskCardOverlay as n } from "./task-card.js";
4
+ export {
5
+ e as BoardColumn,
6
+ o as KanbanBoard,
7
+ f as TaskCard,
8
+ n as TaskCardOverlay
9
+ };
@@ -0,0 +1,17 @@
1
+ import { BoardColumnData } from './board-column';
2
+ import * as React from 'react';
3
+ export interface BoardData {
4
+ columns: BoardColumnData[];
5
+ }
6
+ export interface KanbanBoardProps {
7
+ initialData: BoardData;
8
+ onTaskMove?: (taskId: string, toColumnId: string, newOrder: number) => void;
9
+ onTaskAdd?: (columnId: string, title: string) => void;
10
+ onColumnRename?: (columnId: string, name: string) => void;
11
+ onColumnDelete?: (columnId: string) => void;
12
+ onColumnToggleVisibility?: (columnId: string, visible: boolean) => void;
13
+ onClickTask?: (taskId: string) => void;
14
+ onAddColumn?: () => void;
15
+ }
16
+ export declare const KanbanBoard: React.ForwardRefExoticComponent<KanbanBoardProps & React.RefAttributes<HTMLDivElement>>;
17
+ //# sourceMappingURL=kanban-board.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-board.d.ts","sourceRoot":"","sources":["../../src/board/kanban-board.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AA4ClE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,SAAS,CAAA;IACtB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3E,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACvE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAMD,eAAO,MAAM,WAAW,yFAuRvB,CAAA"}