captify 0.1.19 → 1.1.1

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 (228) hide show
  1. package/dist/agents/components/agents-list-header.d.ts.map +1 -1
  2. package/dist/agents/components/agents-list-header.js +3 -2
  3. package/dist/agents/components/agents-list-header.js.map +1 -1
  4. package/dist/chat/components/chat-content-approval.d.ts.map +1 -1
  5. package/dist/chat/components/chat-content-approval.js.map +1 -1
  6. package/dist/chat/components/chat-context-toggle.d.ts.map +1 -1
  7. package/dist/chat/components/chat-context-toggle.js +2 -4
  8. package/dist/chat/components/chat-context-toggle.js.map +1 -1
  9. package/dist/comments/comments.constants.d.ts +8 -1
  10. package/dist/comments/comments.constants.d.ts.map +1 -1
  11. package/dist/comments/comments.constants.js +18 -0
  12. package/dist/comments/comments.constants.js.map +1 -1
  13. package/dist/comments/comments.interfaces.d.ts +5 -0
  14. package/dist/comments/comments.interfaces.d.ts.map +1 -1
  15. package/dist/comments/comments.utilities.d.ts +30 -1
  16. package/dist/comments/comments.utilities.d.ts.map +1 -1
  17. package/dist/comments/comments.utilities.js +41 -1
  18. package/dist/comments/comments.utilities.js.map +1 -1
  19. package/dist/comments/hooks/use-comments.d.ts.map +1 -1
  20. package/dist/comments/hooks/use-comments.js +1 -0
  21. package/dist/comments/hooks/use-comments.js.map +1 -1
  22. package/dist/comments/services/comments.factory.d.ts.map +1 -1
  23. package/dist/comments/services/comments.factory.js +5 -2
  24. package/dist/comments/services/comments.factory.js.map +1 -1
  25. package/dist/comments/services/comments.service.d.ts +9 -2
  26. package/dist/comments/services/comments.service.d.ts.map +1 -1
  27. package/dist/comments/services/comments.service.js +96 -4
  28. package/dist/comments/services/comments.service.js.map +1 -1
  29. package/dist/db/schemas/index.d.ts +6 -4
  30. package/dist/db/schemas/index.d.ts.map +1 -1
  31. package/dist/db/schemas/index.js +2 -1
  32. package/dist/db/schemas/index.js.map +1 -1
  33. package/dist/db/schemas/notifications.schema.d.ts +107 -0
  34. package/dist/db/schemas/notifications.schema.d.ts.map +1 -0
  35. package/dist/db/schemas/notifications.schema.js +124 -0
  36. package/dist/db/schemas/notifications.schema.js.map +1 -0
  37. package/dist/feedback/api/feedback.handlers.d.ts.map +1 -1
  38. package/dist/feedback/api/feedback.handlers.js +1 -0
  39. package/dist/feedback/api/feedback.handlers.js.map +1 -1
  40. package/dist/feedback/components/feedback-editor.d.ts.map +1 -1
  41. package/dist/feedback/components/feedback-editor.js +6 -4
  42. package/dist/feedback/components/feedback-editor.js.map +1 -1
  43. package/dist/feedback/feedback.interfaces.d.ts +24 -1
  44. package/dist/feedback/feedback.interfaces.d.ts.map +1 -1
  45. package/dist/feedback/services/feedback.service.d.ts +26 -3
  46. package/dist/feedback/services/feedback.service.d.ts.map +1 -1
  47. package/dist/feedback/services/feedback.service.js +270 -11
  48. package/dist/feedback/services/feedback.service.js.map +1 -1
  49. package/dist/files/components/folder-browser/folder-breadcrumb.d.ts.map +1 -1
  50. package/dist/files/components/folder-browser/folder-breadcrumb.js +1 -1
  51. package/dist/files/components/folder-browser/folder-breadcrumb.js.map +1 -1
  52. package/dist/files/components/folder-browser/folder-list-item.js +1 -1
  53. package/dist/files/components/folder-browser/folder-list-item.js.map +1 -1
  54. package/dist/files/components/folder-browser/folder-tree-item.d.ts.map +1 -1
  55. package/dist/files/components/folder-browser/folder-tree-item.js +1 -1
  56. package/dist/files/components/folder-browser/folder-tree-item.js.map +1 -1
  57. package/dist/files/components/folder-browser/folder-tree-sidebar.js +1 -1
  58. package/dist/files/components/folder-browser/folder-tree-sidebar.js.map +1 -1
  59. package/dist/notifications/api/index.d.ts +7 -0
  60. package/dist/notifications/api/index.d.ts.map +1 -0
  61. package/dist/notifications/api/index.js +8 -0
  62. package/dist/notifications/api/index.js.map +1 -0
  63. package/dist/notifications/api/notifications.client.d.ts +86 -0
  64. package/dist/notifications/api/notifications.client.d.ts.map +1 -0
  65. package/dist/notifications/api/notifications.client.js +102 -0
  66. package/dist/notifications/api/notifications.client.js.map +1 -0
  67. package/dist/notifications/api/notifications.handlers.d.ts +166 -0
  68. package/dist/notifications/api/notifications.handlers.d.ts.map +1 -0
  69. package/dist/notifications/api/notifications.handlers.js +187 -0
  70. package/dist/notifications/api/notifications.handlers.js.map +1 -0
  71. package/dist/notifications/hooks/index.d.ts +5 -0
  72. package/dist/notifications/hooks/index.d.ts.map +1 -0
  73. package/dist/notifications/hooks/index.js +5 -0
  74. package/dist/notifications/hooks/index.js.map +1 -0
  75. package/dist/notifications/hooks/use-notifications-api.d.ts +111 -0
  76. package/dist/notifications/hooks/use-notifications-api.d.ts.map +1 -0
  77. package/dist/notifications/hooks/use-notifications-api.js +253 -0
  78. package/dist/notifications/hooks/use-notifications-api.js.map +1 -0
  79. package/dist/notifications/index.d.ts +16 -0
  80. package/dist/notifications/index.d.ts.map +1 -0
  81. package/dist/notifications/index.js +18 -0
  82. package/dist/notifications/index.js.map +1 -0
  83. package/dist/notifications/notification.utilities.d.ts +12 -0
  84. package/dist/notifications/notification.utilities.d.ts.map +1 -0
  85. package/dist/notifications/notification.utilities.js +35 -0
  86. package/dist/notifications/notification.utilities.js.map +1 -0
  87. package/dist/notifications/notifications.constants.d.ts +72 -0
  88. package/dist/notifications/notifications.constants.d.ts.map +1 -0
  89. package/dist/notifications/notifications.constants.js +104 -0
  90. package/dist/notifications/notifications.constants.js.map +1 -0
  91. package/dist/notifications/notifications.errors.d.ts +35 -0
  92. package/dist/notifications/notifications.errors.d.ts.map +1 -0
  93. package/dist/notifications/notifications.errors.js +51 -0
  94. package/dist/notifications/notifications.errors.js.map +1 -0
  95. package/dist/notifications/notifications.interfaces.d.ts +116 -0
  96. package/dist/notifications/notifications.interfaces.d.ts.map +1 -0
  97. package/dist/notifications/notifications.interfaces.js +10 -0
  98. package/dist/notifications/notifications.interfaces.js.map +1 -0
  99. package/dist/notifications/notifications.schemas.d.ts +139 -0
  100. package/dist/notifications/notifications.schemas.d.ts.map +1 -0
  101. package/dist/notifications/notifications.schemas.js +167 -0
  102. package/dist/notifications/notifications.schemas.js.map +1 -0
  103. package/dist/notifications/services/index.d.ts +6 -0
  104. package/dist/notifications/services/index.d.ts.map +1 -0
  105. package/dist/notifications/services/index.js +6 -0
  106. package/dist/notifications/services/index.js.map +1 -0
  107. package/dist/notifications/services/notifications.factory.d.ts +19 -0
  108. package/dist/notifications/services/notifications.factory.d.ts.map +1 -0
  109. package/dist/notifications/services/notifications.factory.js +58 -0
  110. package/dist/notifications/services/notifications.factory.js.map +1 -0
  111. package/dist/notifications/services/notifications.service.d.ts +88 -0
  112. package/dist/notifications/services/notifications.service.d.ts.map +1 -0
  113. package/dist/notifications/services/notifications.service.js +620 -0
  114. package/dist/notifications/services/notifications.service.js.map +1 -0
  115. package/dist/permissions/api/permissions.handlers.d.ts +20 -20
  116. package/dist/permissions/components/resource-panel.d.ts.map +1 -1
  117. package/dist/permissions/components/resource-panel.js +2 -1
  118. package/dist/permissions/components/resource-panel.js.map +1 -1
  119. package/dist/permissions/hooks/index.d.ts +1 -0
  120. package/dist/permissions/hooks/index.d.ts.map +1 -1
  121. package/dist/permissions/hooks/index.js +1 -0
  122. package/dist/permissions/hooks/index.js.map +1 -1
  123. package/dist/permissions/hooks/use-notification-permissions.d.ts +19 -0
  124. package/dist/permissions/hooks/use-notification-permissions.d.ts.map +1 -0
  125. package/dist/permissions/hooks/use-notification-permissions.js +32 -0
  126. package/dist/permissions/hooks/use-notification-permissions.js.map +1 -0
  127. package/dist/permissions/hooks/use-permissions-dashboard.d.ts +6 -6
  128. package/dist/permissions/hooks/use-policies.d.ts +2 -2
  129. package/dist/permissions/permissions.constants.d.ts +5 -0
  130. package/dist/permissions/permissions.constants.d.ts.map +1 -1
  131. package/dist/permissions/permissions.constants.js +35 -0
  132. package/dist/permissions/permissions.constants.js.map +1 -1
  133. package/dist/permissions/permissions.interfaces.d.ts +12 -0
  134. package/dist/permissions/permissions.interfaces.d.ts.map +1 -1
  135. package/dist/permissions/permissions.schemas.d.ts +56 -21
  136. package/dist/permissions/permissions.schemas.d.ts.map +1 -1
  137. package/dist/permissions/permissions.schemas.js +6 -1
  138. package/dist/permissions/permissions.schemas.js.map +1 -1
  139. package/dist/search/components/global-search-bar.d.ts.map +1 -1
  140. package/dist/search/components/global-search-bar.js +10 -11
  141. package/dist/search/components/global-search-bar.js.map +1 -1
  142. package/dist/shared/components/skeleton/console-layout-skeleton.d.ts +9 -21
  143. package/dist/shared/components/skeleton/console-layout-skeleton.d.ts.map +1 -1
  144. package/dist/shared/components/skeleton/console-layout-skeleton.js +13 -29
  145. package/dist/shared/components/skeleton/console-layout-skeleton.js.map +1 -1
  146. package/dist/shared/components/ui/sidebar.js +9 -9
  147. package/dist/shared/components/ui/sidebar.js.map +1 -1
  148. package/dist/shared/shared.constants.d.ts +1 -0
  149. package/dist/shared/shared.constants.d.ts.map +1 -1
  150. package/dist/shared/shared.constants.js +1 -0
  151. package/dist/shared/shared.constants.js.map +1 -1
  152. package/dist/shared/shared.interfaces.d.ts +0 -1
  153. package/dist/shared/shared.interfaces.d.ts.map +1 -1
  154. package/dist/shell/components/ConsoleLayout.d.ts +1 -1
  155. package/dist/shell/components/ConsoleLayout.d.ts.map +1 -1
  156. package/dist/shell/components/ConsoleLayout.js +6 -3
  157. package/dist/shell/components/ConsoleLayout.js.map +1 -1
  158. package/dist/shell/components/app-launcher/app-launcher-search-bar.js +1 -1
  159. package/dist/shell/components/app-launcher/app-launcher-search-bar.js.map +1 -1
  160. package/dist/shell/components/app-launcher/app-launcher.d.ts.map +1 -1
  161. package/dist/shell/components/app-launcher/app-launcher.js +2 -1
  162. package/dist/shell/components/app-launcher/app-launcher.js.map +1 -1
  163. package/dist/shell/components/app-launcher/category-navigation.d.ts.map +1 -1
  164. package/dist/shell/components/app-launcher/category-navigation.js +9 -2
  165. package/dist/shell/components/app-launcher/category-navigation.js.map +1 -1
  166. package/dist/shell/components/app-launcher/left-sidebar.d.ts +1 -1
  167. package/dist/shell/components/app-launcher/left-sidebar.d.ts.map +1 -1
  168. package/dist/shell/components/app-launcher/left-sidebar.js +3 -4
  169. package/dist/shell/components/app-launcher/left-sidebar.js.map +1 -1
  170. package/dist/shell/components/app-launcher/service-item.d.ts.map +1 -1
  171. package/dist/shell/components/app-launcher/service-item.js +2 -2
  172. package/dist/shell/components/app-launcher/service-item.js.map +1 -1
  173. package/dist/shell/components/index.d.ts +1 -0
  174. package/dist/shell/components/index.d.ts.map +1 -1
  175. package/dist/shell/components/index.js +2 -0
  176. package/dist/shell/components/index.js.map +1 -1
  177. package/dist/shell/components/layouts/app-sidebar.d.ts +4 -1
  178. package/dist/shell/components/layouts/app-sidebar.d.ts.map +1 -1
  179. package/dist/shell/components/layouts/app-sidebar.js +39 -6
  180. package/dist/shell/components/layouts/app-sidebar.js.map +1 -1
  181. package/dist/shell/components/layouts/content-header.d.ts.map +1 -1
  182. package/dist/shell/components/layouts/content-header.js +5 -24
  183. package/dist/shell/components/layouts/content-header.js.map +1 -1
  184. package/dist/shell/components/layouts/index.d.ts +1 -3
  185. package/dist/shell/components/layouts/index.d.ts.map +1 -1
  186. package/dist/shell/components/layouts/index.js +1 -3
  187. package/dist/shell/components/layouts/index.js.map +1 -1
  188. package/dist/shell/components/layouts/sidebar-nested-item.d.ts.map +1 -1
  189. package/dist/shell/components/layouts/sidebar-nested-item.js +12 -5
  190. package/dist/shell/components/layouts/sidebar-nested-item.js.map +1 -1
  191. package/dist/shell/components/notifications/notification-container.d.ts +16 -2
  192. package/dist/shell/components/notifications/notification-container.d.ts.map +1 -1
  193. package/dist/shell/components/notifications/notification-container.js +75 -4
  194. package/dist/shell/components/notifications/notification-container.js.map +1 -1
  195. package/dist/shell/components/notifications/notification-item.d.ts +1 -1
  196. package/dist/shell/components/notifications/notification-item.d.ts.map +1 -1
  197. package/dist/shell/components/notifications/notification-item.js +26 -7
  198. package/dist/shell/components/notifications/notification-item.js.map +1 -1
  199. package/dist/shell/components/notifications/notification-panel-header.d.ts.map +1 -1
  200. package/dist/shell/components/notifications/notification-panel-header.js +4 -1
  201. package/dist/shell/components/notifications/notification-panel-header.js.map +1 -1
  202. package/dist/shell/components/notifications/notifications.d.ts +1 -1
  203. package/dist/shell/components/notifications/notifications.d.ts.map +1 -1
  204. package/dist/shell/components/notifications/notifications.js +2 -2
  205. package/dist/shell/components/notifications/notifications.js.map +1 -1
  206. package/dist/shell/components/toolbars/index.d.ts +1 -4
  207. package/dist/shell/components/toolbars/index.d.ts.map +1 -1
  208. package/dist/shell/components/toolbars/index.js +2 -5
  209. package/dist/shell/components/toolbars/index.js.map +1 -1
  210. package/dist/shell/components/toolbars/top-right-toolbar.d.ts +1 -1
  211. package/dist/shell/components/toolbars/top-right-toolbar.d.ts.map +1 -1
  212. package/dist/shell/components/toolbars/top-right-toolbar.js +2 -2
  213. package/dist/shell/components/toolbars/top-right-toolbar.js.map +1 -1
  214. package/dist/shell/components/toolbars/top-toolbar-feedback.js +1 -1
  215. package/dist/shell/components/toolbars/top-toolbar-feedback.js.map +1 -1
  216. package/dist/shell/shell.constants.d.ts +1 -1
  217. package/dist/shell/shell.constants.js +1 -1
  218. package/dist/shell/shell.interfaces.d.ts +8 -4
  219. package/dist/shell/shell.interfaces.d.ts.map +1 -1
  220. package/dist/shell/shell.utilities.d.ts +7 -0
  221. package/dist/shell/shell.utilities.d.ts.map +1 -1
  222. package/dist/shell/shell.utilities.js +17 -0
  223. package/dist/shell/shell.utilities.js.map +1 -1
  224. package/package.json +130 -12
  225. package/dist/chat/components/chat-assistant-legacy.d.ts +0 -9
  226. package/dist/chat/components/chat-assistant-legacy.d.ts.map +0 -1
  227. package/dist/chat/components/chat-assistant-legacy.js +0 -73
  228. package/dist/chat/components/chat-assistant-legacy.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/shell/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,cAAc,gCAAgC,CAAC;AAE/C,iBAAiB;AACjB,cAAc,sCAAsC,CAAC;AAErD,WAAW;AACX,cAAc,iCAAiC,CAAC;AAEhD,eAAe;AACf,cAAc,qCAAqC,CAAC;AAEpD,gBAAgB;AAChB,cAAc,sCAAsC,CAAC;AAErD,UAAU;AACV,cAAc,gCAAgC,CAAC;AAE/C,WAAW;AACX,cAAc,2DAA2D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/shell/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,cAAc,gCAAgC,CAAC;AAE/C,iBAAiB;AACjB,cAAc,sCAAsC,CAAC;AAErD,gBAAgB;AAChB,cAAc,sCAAsC,CAAC;AAErD,WAAW;AACX,cAAc,iCAAiC,CAAC;AAEhD,eAAe;AACf,cAAc,qCAAqC,CAAC;AAEpD,gBAAgB;AAChB,cAAc,sCAAsC,CAAC;AAErD,UAAU;AACV,cAAc,gCAAgC,CAAC;AAE/C,WAAW;AACX,cAAc,2DAA2D,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { RouteItem } from "../../shell.interfaces";
2
+ import type { Session } from "next-auth";
2
3
  interface AppSidebarProps {
3
4
  menuItems?: RouteItem[];
4
5
  adminMenuItems?: RouteItem[];
6
+ session?: Session;
7
+ appName?: string;
5
8
  }
6
- declare const AppSidebar: ({ menuItems, adminMenuItems }: AppSidebarProps) => import("react/jsx-runtime").JSX.Element;
9
+ declare const AppSidebar: ({ menuItems, adminMenuItems, session: sessionProp, appName, }: AppSidebarProps) => import("react/jsx-runtime").JSX.Element;
7
10
  export default AppSidebar;
8
11
  //# sourceMappingURL=app-sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/app-sidebar.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAIzD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;CAC9B;AAED,QAAA,MAAM,UAAU,GAAI,+BAAkD,eAAe,4CA4GpF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/app-sidebar.tsx"],"names":[],"mappings":"AAgCA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,UAAU,GAAI,+DAKjB,eAAe,4CAwRjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,16 +1,43 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useBookmarkContext } from "../../../bookmarks/components";
4
- import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupLabel, } from "../../../shared/components/ui/sidebar";
5
4
  import { COLLABORATION_ROUTES } from "../../../collaboration/collaboration.constants";
5
+ import { TooltipButton } from "../../../shared/components/tooltip-button";
6
+ import { Avatar, AvatarFallback, AvatarImage } from "../../../shared/components/ui/avatar";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../../shared/components/ui/dropdown-menu";
8
+ import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, useSidebar, } from "../../../shared/components/ui/sidebar";
9
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../../../shared/components/ui/tooltip";
6
10
  import { ADMIN_MENU_ITEMS } from "../../../shared/config";
7
11
  import { cn } from "../../../shared/utilities/cn";
12
+ import { getInitials } from "../../../shared/utilities/string-utilities";
13
+ import { AppLauncher } from "../app-launcher";
8
14
  import { SidebarMenuList } from "./sidebar-menu-list";
9
15
  import { useNavPermissions } from "../../hooks";
10
16
  import { DEFAULT_SIDEBAR_HEADER } from "../../shell.constants";
17
+ import { getAppTitle, getEnvironmentFromHost } from "../../shell.utilities";
18
+ import { LogOut, Monitor, Moon, Sun, User } from "lucide-react";
19
+ import { signOut, useSession } from "next-auth/react";
20
+ import { useTheme } from "next-themes";
21
+ import { useRouter } from "next/navigation";
11
22
  import { useMemo } from "react";
12
- const AppSidebar = ({ menuItems, adminMenuItems = ADMIN_MENU_ITEMS }) => {
13
- const { activeService, bookmarkServices } = useBookmarkContext();
23
+ const AppSidebar = ({ menuItems, adminMenuItems = ADMIN_MENU_ITEMS, session: sessionProp, appName = "TITAN", }) => {
24
+ var _a, _b, _c, _d, _e, _f, _g, _h;
25
+ const { activeService } = useBookmarkContext();
26
+ const { data: sessionData } = useSession();
27
+ const session = sessionProp || sessionData;
28
+ const router = useRouter();
29
+ const { setTheme, theme } = useTheme();
30
+ const { toggleSidebar } = useSidebar();
31
+ // Get environment-aware app name
32
+ const displayAppName = useMemo(() => {
33
+ const environment = getEnvironmentFromHost();
34
+ return getAppTitle(appName, environment);
35
+ }, [appName]);
36
+ const themeOptions = [
37
+ { value: "light", icon: Sun, label: "Light" },
38
+ { value: "dark", icon: Moon, label: "Dark" },
39
+ { value: "system", icon: Monitor, label: "System" },
40
+ ];
14
41
  // Permission-based navigation filtering
15
42
  const { canViewAgents, canViewDocuments, canViewCollaboration, canViewLlm, canViewLlmBudgets, canViewLlmUsage, canViewUsers, canViewGroups, canViewOntology, canViewPermissions, canViewFeedbacks, canViewSearchIndices, } = useNavPermissions();
16
43
  // Priority: activeService.menuItems > menuItems prop > empty array
@@ -87,9 +114,15 @@ const AppSidebar = ({ menuItems, adminMenuItems = ADMIN_MENU_ITEMS }) => {
87
114
  canViewFeedbacks,
88
115
  canViewSearchIndices,
89
116
  ]);
90
- return (_jsx(Sidebar, { className: cn("text-sidebar-foreground border-border", bookmarkServices.length === 0
91
- ? "top-(--header-height-without-service)"
92
- : "top-(--header-height)"), id: "sidebar-content", role: "navigation", "aria-label": "Main navigation", children: _jsx(SidebarContent, { children: _jsxs(SidebarGroup, { children: [_jsx(SidebarGroupLabel, { children: activeService ? activeService.name : DEFAULT_SIDEBAR_HEADER }), _jsx(SidebarMenuList, { items: resolvedMenuItems })] }) }) }));
117
+ const userInitial = useMemo(() => {
118
+ var _a;
119
+ if (!((_a = session === null || session === void 0 ? void 0 : session.user) === null || _a === void 0 ? void 0 : _a.name))
120
+ return "?";
121
+ return getInitials(session.user.name || "User");
122
+ }, [session]);
123
+ return (_jsxs(Sidebar, { collapsible: "icon", className: cn("bg-sidebar text-sidebar-foreground border-sidebar-border"), id: "sidebar-content", role: "navigation", "aria-label": "Main navigation", children: [_jsxs(SidebarHeader, { className: "border-sidebar-border border-b", children: [_jsx("div", { className: "group-data-[collapsible=icon]:hidden", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(TooltipButton, { tooltip: "Toggle sidebar", variant: "ghost", size: "icon", onClick: toggleSidebar, className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground size-8 shrink-0", "aria-label": "Toggle sidebar", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M9 3v18" })] }) }), _jsx("div", { className: "bg-sidebar-primary flex size-8 items-center justify-center", children: _jsx("span", { className: "text-sidebar-primary-foreground text-lg font-bold", children: "T" }) }), _jsx("span", { className: "text-sidebar-foreground flex-1 text-lg font-bold", children: displayAppName }), _jsx("div", { className: "[&_button]:text-sidebar-foreground [&_button]:hover:bg-sidebar-accent [&_button]:hover:text-sidebar-foreground", children: _jsx(AppLauncher, {}) })] }) }), _jsxs("div", { className: "hidden flex-col items-center gap-2 group-data-[collapsible=icon]:flex", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "bg-sidebar-primary flex size-8 cursor-default items-center justify-center", children: _jsx("span", { className: "text-sidebar-primary-foreground text-sm font-bold", children: "T" }) }) }), _jsx(TooltipContent, { side: "right", children: displayAppName })] }), _jsx("div", { className: "[&_button]:text-sidebar-foreground [&_button]:hover:bg-sidebar-accent", children: _jsx(AppLauncher, {}) }), _jsx(TooltipButton, { tooltip: "Toggle sidebar", variant: "ghost", size: "icon", onClick: toggleSidebar, className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground size-8 shrink-0", "aria-label": "Toggle sidebar", children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }), _jsx("path", { d: "M9 3v18" })] }) })] })] }), _jsx(SidebarContent, { className: "bg-sidebar", children: _jsxs(SidebarGroup, { className: "px-0", children: [_jsx(SidebarGroupLabel, { className: "text-sidebar-foreground/70 px-2", children: activeService ? activeService.name : DEFAULT_SIDEBAR_HEADER }), _jsx(SidebarMenuList, { items: resolvedMenuItems })] }) }), _jsx(SidebarFooter, { className: "border-sidebar-border border-t", children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { className: "hover:bg-sidebar-accent focus-visible:ring-sidebar-ring flex w-full items-center gap-3 text-left group-data-[collapsible=icon]:justify-center focus:outline-none focus-visible:ring-2", children: [_jsxs(Avatar, { className: "size-8 shrink-0", children: [_jsx(AvatarImage, { src: (_b = (_a = session === null || session === void 0 ? void 0 : session.user) === null || _a === void 0 ? void 0 : _a.image) !== null && _b !== void 0 ? _b : undefined, alt: "User Profile" }), _jsx(AvatarFallback, { className: "bg-sidebar-primary text-sidebar-primary-foreground text-sm font-semibold", children: userInitial })] }), _jsxs("div", { className: "flex flex-1 flex-col overflow-hidden group-data-[collapsible=icon]:hidden", children: [_jsx("span", { className: "text-sidebar-foreground truncate text-sm font-semibold", children: ((_c = session === null || session === void 0 ? void 0 : session.user) === null || _c === void 0 ? void 0 : _c.name) || "User" }), _jsx("span", { className: "text-sidebar-foreground/60 truncate text-xs", children: ((_d = session === null || session === void 0 ? void 0 : session.user) === null || _d === void 0 ? void 0 : _d.email) || "" })] })] }) }), _jsxs(DropdownMenuContent, { className: "w-56", align: "end", side: "top", children: [_jsx(DropdownMenuLabel, { className: "sr-only", children: "User Profile" }), _jsxs("div", { className: "flex items-center gap-2 px-1 py-1.5 text-left text-sm", children: [_jsxs(Avatar, { className: "size-8", children: [_jsx(AvatarImage, { src: (_f = (_e = session === null || session === void 0 ? void 0 : session.user) === null || _e === void 0 ? void 0 : _e.image) !== null && _f !== void 0 ? _f : undefined, alt: "User Profile" }), _jsx(AvatarFallback, { children: userInitial })] }), _jsxs("div", { className: "grid flex-1 text-left text-sm leading-tight", children: [_jsx("span", { className: "truncate font-medium", children: ((_g = session === null || session === void 0 ? void 0 : session.user) === null || _g === void 0 ? void 0 : _g.name) || "User" }), _jsx("span", { className: "truncate text-xs text-gray-600", children: ((_h = session === null || session === void 0 ? void 0 : session.user) === null || _h === void 0 ? void 0 : _h.email) || "" })] })] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuGroup, { children: [_jsxs(DropdownMenuItem, { className: "cursor-pointer", onClick: () => router.push("/profile"), children: [_jsx(User, { "aria-hidden": "true" }), "Profile"] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: "cursor-pointer", onClick: () => signOut(), children: [_jsx(LogOut, { "aria-hidden": "true" }), "Log out"] })] }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuLabel, { children: "Theme" }), _jsx(DropdownMenuGroup, { children: _jsx("div", { className: "inline-flex gap-1 bg-neutral-100 dark:bg-neutral-800", children: themeOptions.map(({ value, icon: Icon, label }) => (_jsx(DropdownMenuItem, { onClick: () => setTheme(value), className: cn("flex cursor-pointer items-center transition-colors hover:bg-neutral-200/60 hover:text-black", theme === value
124
+ ? "bg-white shadow-sm dark:bg-neutral-700 dark:text-neutral-100"
125
+ : "text-gray-600 hover:bg-neutral-200/60 hover:text-black dark:text-neutral-400 dark:hover:bg-neutral-700/60"), "data-testid": "sidebar-theme-option", children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "flex items-center justify-center", children: _jsx(Icon, { className: "-ml-1 size-4", "aria-hidden": "true" }) }) }), _jsx(TooltipContent, { side: "top", className: "z-[60]", children: label })] }) }, value))) }) })] })] }) })] }));
93
126
  };
94
127
  export default AppSidebar;
95
128
  //# sourceMappingURL=app-sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/app-sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-sidebar.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/app-sidebar.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-header.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/content-header.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,aAAa,+CAmEzB,CAAC"}
1
+ {"version":3,"file":"content-header.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/content-header.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,aAAa,+CAiCzB,CAAC"}
@@ -2,34 +2,15 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { BreadcrumbComponent } from "../../../breadcrumb/components";
4
4
  import { useBreadcrumbOverrides } from "../../../breadcrumb/hooks";
5
- import { capitalizeWords } from "../../../shared/utilities/string-utilities";
6
- import { usePathname } from "next/navigation";
7
- import { useMemo, useCallback } from "react";
8
5
  import { GlobalSearchBar } from "../../../search/components/global-search-bar";
9
- import Notifications from "../notifications/notifications";
6
+ import { capitalizeWords } from "../../../shared/utilities/string-utilities";
7
+ import NotificationContainer from "../notifications/notification-container";
10
8
  import { TopToolbarFeedback } from "../toolbars/top-toolbar-feedback";
9
+ import { usePathname } from "next/navigation";
10
+ import { useMemo } from "react";
11
11
  export const ContentHeader = () => {
12
12
  const pathname = usePathname();
13
13
  const overrides = useBreadcrumbOverrides();
14
- // Empty notifications for now - can be populated from server/context later
15
- const notifications = useMemo(() => [], []);
16
- const unreadCount = 0;
17
- const hasMore = false;
18
- const markAsRead = useCallback((_id) => {
19
- // TODO: Implement mark as read
20
- }, []);
21
- const markAllAsRead = useCallback(() => {
22
- // TODO: Implement mark all as read
23
- }, []);
24
- const dismissAll = useCallback(() => {
25
- // TODO: Implement dismiss all
26
- }, []);
27
- const dismiss = useCallback((_id) => {
28
- // TODO: Implement dismiss
29
- }, []);
30
- const showMore = useCallback(() => {
31
- // TODO: Implement show more
32
- }, []);
33
14
  const breadcrumbItems = useMemo(() => {
34
15
  return pathname
35
16
  .split("/")
@@ -46,6 +27,6 @@ export const ContentHeader = () => {
46
27
  };
47
28
  });
48
29
  }, [pathname, overrides]);
49
- return (_jsx("div", { className: "border-b bg-white px-6 py-2 dark:bg-gray-950", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsx(BreadcrumbComponent, { items: breadcrumbItems, showHome: true }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsx(GlobalSearchBar, { placeholder: "Search...", className: "w-96" }), _jsx(Notifications, { notifications: notifications, unreadCount: unreadCount, hasMore: hasMore, onMarkAsRead: markAsRead, onMarkAllAsRead: markAllAsRead, onDismissAll: dismissAll, onDismiss: dismiss, onShowMore: showMore }), _jsx(TopToolbarFeedback, {})] })] }) }));
30
+ return (_jsx("div", { className: "border-b bg-white px-6 py-2 dark:bg-gray-950", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsx(BreadcrumbComponent, { items: breadcrumbItems, showHome: true }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsx(GlobalSearchBar, { placeholder: "Search...", className: "w-96" }), _jsx(NotificationContainer, {}), _jsx(TopToolbarFeedback, {})] })] }) }));
50
31
  };
51
32
  //# sourceMappingURL=content-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-header.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/content-header.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-header.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/content-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,qBAAqB,MAAM,6DAA6D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAE3C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,OAAO,QAAQ;aACZ,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;gBAC5B,WAAW,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;gBAC5B,IAAI,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iBAAiB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACpD,IAAI,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI;aACrB,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,cAAK,SAAS,EAAC,8CAA8C,YAC3D,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,mBAAmB,IAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,GAAI,EAC/D,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,eAAe,IAAC,WAAW,EAAC,WAAW,EAAC,SAAS,EAAC,MAAM,GAAG,EAC5D,KAAC,qBAAqB,KAAG,EACzB,KAAC,kBAAkB,KAAG,IAClB,IACF,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,7 +1,5 @@
1
- export { default as AppHeader } from "./app-header";
2
- export { default as AppLayout } from "./app-layout";
3
- export { default as AppServicesBar } from "./app-services-bar";
4
1
  export { default as AppSidebar } from "./app-sidebar";
5
2
  export { SidebarMenuList } from "./sidebar-menu-list";
6
3
  export { SidebarNestedItem } from "./sidebar-nested-item";
4
+ export { ContentHeader } from "./content-header";
7
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
@@ -1,7 +1,5 @@
1
- export { default as AppHeader } from "./app-header";
2
- export { default as AppLayout } from "./app-layout";
3
- export { default as AppServicesBar } from "./app-services-bar";
4
1
  export { default as AppSidebar } from "./app-sidebar";
5
2
  export { SidebarMenuList } from "./sidebar-menu-list";
6
3
  export { SidebarNestedItem } from "./sidebar-nested-item";
4
+ export { ContentHeader } from "./content-header";
7
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-nested-item.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/sidebar-nested-item.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAa,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAejF,eAAO,MAAM,iBAAiB,GAAI,wCAK/B,sBAAsB,4CA8ExB,CAAC"}
1
+ {"version":3,"file":"sidebar-nested-item.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/sidebar-nested-item.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAa,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAejF,eAAO,MAAM,iBAAiB,GAAI,wCAK/B,sBAAsB,4CAuGxB,CAAC"}
@@ -21,14 +21,21 @@ export const SidebarNestedItem = ({ item, icon: Icon, isActive, depth, }) => {
21
21
  const [manualOpen, setManualOpen] = useState(null);
22
22
  // Auto-open when active, but respect manual toggle if user has interacted
23
23
  const isOpen = manualOpen !== null && manualOpen !== void 0 ? manualOpen : (isActive || isChildActive);
24
- const isLink = useMemo(() => item.path && !hasChildren, [item.path, hasChildren]);
25
24
  const toggle = useCallback((e) => {
26
25
  e.stopPropagation();
27
26
  setManualOpen((prev) => (prev === null ? !(isActive || isChildActive) : !prev));
28
27
  }, [isActive, isChildActive]);
29
- const itemClasses = useMemo(() => cn("flex w-full justify-between", depth > 0 && "pl-6"), [depth]);
30
- const content = (_jsxs("div", { className: "flex items-center gap-2", children: [Icon && _jsx(Icon, { className: "size-4", "aria-hidden": "true" }), " ", _jsx("span", { children: item.title })] }));
31
- const toggleIcon = hasChildren && (_jsx("div", { className: "ml-auto flex items-center", children: isOpen ? (_jsx(ChevronDown, { className: "size-4", "aria-hidden": "true" })) : (_jsx(ChevronRight, { className: "size-4", "aria-hidden": "true" })) }));
32
- return (_jsxs(SidebarMenuItem, { children: [_jsx(SidebarMenuButton, Object.assign({ className: cn(itemClasses, !isLink && "cursor-pointer", isActive && "!bg-blue-500/10 !text-blue-600 hover:!bg-blue-500/20 dark:!text-blue-400"), isActive: isActive }, (isLink ? { asChild: true } : {}), (!isLink && hasChildren ? { onClick: toggle, "aria-expanded": isOpen } : {}), { children: isLink ? (_jsx(Link, { href: item.path, children: content })) : (_jsxs(_Fragment, { children: [content, " ", toggleIcon] })) })), hasChildren && isOpen && (_jsx("div", { className: "ml-4 border-l pl-3", children: _jsx(SidebarMenuList, { items: item.children, depth: depth + 1 }) }))] }));
28
+ const itemClasses = useMemo(() => cn("flex w-full justify-between", depth > 0 && "pl-8"), [depth]);
29
+ const content = (_jsxs("div", { className: "flex items-center gap-3", children: [Icon && _jsx(Icon, { className: "size-5 shrink-0", strokeWidth: 2, "aria-hidden": "true" }), _jsx("span", { className: "text-[15px] group-data-[collapsible=icon]:hidden", children: item.title })] }));
30
+ const toggleIcon = hasChildren && (_jsx("div", { className: "ml-auto flex items-center group-data-[collapsible=icon]:hidden", children: isOpen ? (_jsx(ChevronDown, { className: "size-4", strokeWidth: 2, "aria-hidden": "true" })) : (_jsx(ChevronRight, { className: "size-4", strokeWidth: 2, "aria-hidden": "true" })) }));
31
+ // In collapsed state, if this item has children, render them as separate items
32
+ // Hide the parent and show children instead
33
+ if (hasChildren) {
34
+ return (_jsxs(_Fragment, { children: [_jsxs(SidebarMenuItem, { className: "group-data-[collapsible=icon]:hidden", children: [_jsxs(SidebarMenuButton, { tooltip: item.title, className: cn(itemClasses, "cursor-pointer", isActive &&
35
+ "bg-[rgb(67,56,202)]! text-white! hover:bg-[rgb(67,56,202)]! dark:bg-[rgb(67,56,202)]! dark:text-white!"), isActive: isActive, onClick: toggle, "aria-expanded": isOpen, children: [content, " ", toggleIcon] }), isOpen && (_jsx("div", { className: "mt-2 ml-4 border-l", children: _jsx(SidebarMenuList, { items: item.children, depth: depth + 1 }) }))] }), _jsx("div", { className: "hidden group-data-[collapsible=icon]:contents", children: _jsx(SidebarMenuList, { items: item.children, depth: 0 }) })] }));
36
+ }
37
+ // Regular item without children
38
+ return (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { tooltip: item.title, className: cn(itemClasses, isActive &&
39
+ "bg-[rgb(67,56,202)]! text-white! hover:bg-[rgb(67,56,202)]! dark:bg-[rgb(67,56,202)]! dark:text-white!"), isActive: isActive, asChild: true, children: _jsx(Link, { href: item.path, children: content }) }) }));
33
40
  };
34
41
  //# sourceMappingURL=sidebar-nested-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-nested-item.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/sidebar-nested-item.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-nested-item.js","sourceRoot":"","sources":["../../../../lib/shell/components/layouts/sidebar-nested-item.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,18 @@
1
- import { NotificationContainerProps } from "../../shell.interfaces";
2
- declare const NotificationContainer: ({ notifications, notificationsLimit, }: NotificationContainerProps) => import("react/jsx-runtime").JSX.Element;
1
+ import type { NotificationContainerProps } from "../../../notifications/notifications.interfaces";
2
+ /**
3
+ * Notification container that fetches notifications from the API.
4
+ *
5
+ * Uses React Query for data fetching with polling support.
6
+ * Handles mark-as-read, mark-all-as-read, and dismiss actions.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * <NotificationContainer
11
+ * notificationsLimit={10}
12
+ * pollingInterval={30000}
13
+ * />
14
+ * ```
15
+ */
16
+ declare const NotificationContainer: ({ notificationsLimit, pollingInterval, enablePolling, }: NotificationContainerProps) => import("react/jsx-runtime").JSX.Element;
3
17
  export default NotificationContainer;
4
18
  //# sourceMappingURL=notification-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-container.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-container.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,QAAA,MAAM,qBAAqB,GAAI,wCAG5B,0BAA0B,4CAwB5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"notification-container.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-container.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAM/F;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,qBAAqB,GAAI,yDAI5B,0BAA0B,4CA+F5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,10 +1,81 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useNotifications } from "../../hooks";
3
+ import { useNotificationsApi } from "../../../notifications/hooks";
4
+ import { toShellNotification } from "../../../notifications/notification.utilities";
5
+ import { DEFAULT_POLLING_INTERVAL_MS } from "../../../notifications/notifications.constants";
6
+ import { useNotificationPermissions } from "../../../permissions/hooks";
4
7
  import Notifications from "./notifications";
5
- const NotificationContainer = ({ notifications, notificationsLimit = 5, }) => {
6
- const { notifications: visibleNotifications, unreadCount, hasMore, markAllAsRead, markAsRead, dismissAll, dismiss, showMore, } = useNotifications(notifications, notificationsLimit);
7
- return (_jsx(Notifications, { notifications: visibleNotifications, unreadCount: unreadCount, onMarkAllAsRead: markAllAsRead, onMarkAsRead: markAsRead, onDismissAll: dismissAll, onDismiss: dismiss, onShowMore: showMore, hasMore: hasMore }));
8
+ import { useRouter } from "next/navigation";
9
+ /**
10
+ * Notification container that fetches notifications from the API.
11
+ *
12
+ * Uses React Query for data fetching with polling support.
13
+ * Handles mark-as-read, mark-all-as-read, and dismiss actions.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <NotificationContainer
18
+ * notificationsLimit={10}
19
+ * pollingInterval={30000}
20
+ * />
21
+ * ```
22
+ */
23
+ const NotificationContainer = ({ notificationsLimit = 20, pollingInterval = DEFAULT_POLLING_INTERVAL_MS, enablePolling = true, }) => {
24
+ const router = useRouter();
25
+ const { canList, canRead, canMarkRead } = useNotificationPermissions();
26
+ const { notifications: apiNotifications, unreadCount, isLoading, markAsRead, markAllAsRead, dismiss, dismissAll, } = useNotificationsApi({
27
+ limit: notificationsLimit,
28
+ enablePolling,
29
+ pollingInterval,
30
+ });
31
+ // Only show unread count badge if user has both list and read permissions
32
+ // - canList: ensures notifications are visible in the panel
33
+ // - canRead: ensures the unread count can be fetched
34
+ const displayUnreadCount = canList && canRead ? unreadCount : 0;
35
+ // Convert API notifications to shell format
36
+ const notifications = apiNotifications.map(toShellNotification);
37
+ /**
38
+ * Handle notification click - mark as read and navigate
39
+ */
40
+ const handleNotificationClick = (notification) => {
41
+ // Fire-and-forget mark as read to avoid blocking navigation
42
+ if (!notification.read && canMarkRead) {
43
+ markAsRead(notification.id);
44
+ }
45
+ // Navigate to the notification URL if present
46
+ if (notification.url) {
47
+ router.push(notification.url);
48
+ }
49
+ };
50
+ /**
51
+ * Handle mark as read action
52
+ */
53
+ const handleMarkAsRead = async (id) => {
54
+ await markAsRead(id);
55
+ };
56
+ /**
57
+ * Handle mark all as read action
58
+ */
59
+ const handleMarkAllAsRead = async () => {
60
+ await markAllAsRead();
61
+ };
62
+ /**
63
+ * Handle dismiss action
64
+ */
65
+ const handleDismiss = async (id) => {
66
+ await dismiss(id);
67
+ };
68
+ /**
69
+ * Handle dismiss all action
70
+ */
71
+ const handleDismissAll = async () => {
72
+ await dismissAll();
73
+ };
74
+ // Show empty state during initial load
75
+ if (isLoading && notifications.length === 0) {
76
+ return (_jsx(Notifications, { notifications: [], unreadCount: 0, onMarkAllAsRead: handleMarkAllAsRead, onMarkAsRead: handleMarkAsRead, onDismissAll: handleDismissAll, onDismiss: handleDismiss, hasMore: false }));
77
+ }
78
+ return (_jsx(Notifications, { notifications: notifications, unreadCount: displayUnreadCount, onMarkAllAsRead: handleMarkAllAsRead, onMarkAsRead: handleMarkAsRead, onDismissAll: handleDismissAll, onDismiss: handleDismiss, onNotificationClick: handleNotificationClick, hasMore: false }));
8
79
  };
9
80
  export default NotificationContainer;
10
81
  //# sourceMappingURL=notification-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-container.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-container.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,aAAa,MAAM,oDAAoD,CAAC;AAE/E,MAAM,qBAAqB,GAAG,CAAC,EAC7B,aAAa,EACb,kBAAkB,GAAG,CAAC,GACK,EAAE,EAAE;IAC/B,MAAM,EACJ,aAAa,EAAE,oBAAoB,EACnC,WAAW,EACX,OAAO,EACP,aAAa,EACb,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAQ,GACT,GAAG,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAExD,OAAO,CACL,KAAC,aAAa,IACZ,aAAa,EAAE,oBAAoB,EACnC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,aAAa,EAC9B,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,QAAQ,EACpB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"notification-container.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-container.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { NotificationItemProps } from "../../shell.interfaces";
2
- export declare const NotificationItem: ({ notification, onMarkAsRead, onDismiss, maxLines, }: NotificationItemProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const NotificationItem: ({ notification, onMarkAsRead, onDismiss, onClick, maxLines, }: NotificationItemProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=notification-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-item.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-item.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,eAAO,MAAM,gBAAgB,GAAI,sDAK9B,qBAAqB,4CA6EvB,CAAC"}
1
+ {"version":3,"file":"notification-item.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-item.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,eAAO,MAAM,gBAAgB,GAAI,+DAM9B,qBAAqB,4CAuIvB,CAAC"}
@@ -1,15 +1,34 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { NOTIFICATION_TYPE_CONFIG } from "../../../notifications/notifications.constants";
3
+ import { useNotificationPermissions } from "../../../permissions/hooks";
4
+ import { Avatar, AvatarFallback } from "../../../shared/components/ui/avatar";
2
5
  import { Button } from "../../../shared/components/ui/button";
6
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../../../shared/components/ui/tooltip";
3
7
  import { cn } from "../../../shared/utilities/cn";
4
- import { formatDate } from "../../../shared/utilities/date-utilities";
8
+ import { formatTime } from "../../../shared/utilities/date-utilities";
9
+ import { getInitials } from "../../../shared/utilities/string-utilities";
5
10
  import { Bell, Eye, X } from "lucide-react";
6
11
  import Link from "next/link";
7
- export const NotificationItem = ({ notification, onMarkAsRead, onDismiss, maxLines = 2, }) => {
8
- const { id, title, message, read, createdAt, url } = notification;
9
- return (_jsx("div", { className: cn("rounded-md border border-gray-100 bg-white px-4 py-2 shadow-sm dark:border-gray-900 dark:bg-black", !read && "bg-blue-50 dark:bg-blue-900/20"), role: "article", "aria-labelledby": `notification-title-${id}`, "aria-describedby": `notification-message-${id}`, children: _jsxs("div", { className: "flex items-start gap-4", children: [_jsxs("div", { className: "flex flex-1 items-start gap-4", children: [_jsx(Bell, { className: "text-muted-foreground mt-1 size-5 shrink-0", "aria-hidden": "true" }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "mb-1 flex flex-col-reverse items-start justify-start gap-1 sm:flex-row sm:items-center sm:gap-2", children: [_jsx("div", { id: `notification-title-${id}`, className: "text-sm leading-4 font-semibold text-gray-900 dark:text-gray-100", children: title }), _jsx("p", { className: "text-xs text-gray-500", children: _jsx("time", { dateTime: createdAt.toISOString(), children: formatDate(createdAt) }) })] }), url ? (_jsx(Link, { href: url, id: `notification-message-${id}`, className: cn("line-clamp-dynamic text-primary text-sm"), style: {
12
+ export const NotificationItem = ({ notification, onMarkAsRead, onDismiss, onClick, maxLines = 2, }) => {
13
+ const { id, title, message, read, createdAt, url, actorName, type } = notification;
14
+ const { canMarkRead, canDismiss } = useNotificationPermissions();
15
+ // Get icon config for notification type
16
+ const typeConfig = type ? NOTIFICATION_TYPE_CONFIG[type] : null;
17
+ const TypeIcon = typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.icon;
18
+ /**
19
+ * Handle notification click - if onClick is provided, use it to handle navigation
20
+ * Otherwise, let the Link component handle it normally
21
+ */
22
+ const handleNotificationClick = (e) => {
23
+ if (onClick) {
24
+ e.preventDefault();
25
+ onClick(notification);
26
+ }
27
+ };
28
+ const NotificationBody = (_jsxs("div", { className: "flex flex-1 items-start gap-4", children: [_jsxs("div", { className: "relative mt-0.5 shrink-0", children: [actorName ? (_jsx(Avatar, { className: "size-8 text-xs", children: _jsx(AvatarFallback, { children: getInitials(actorName) }) })) : (_jsx("div", { className: "flex size-8 items-center justify-center", children: _jsx(Bell, { className: "text-muted-foreground size-5", "aria-hidden": "true" }) })), TypeIcon && (_jsx("span", { className: cn("absolute -right-0.5 -bottom-0.5 flex size-4 items-center justify-center rounded-full ring-2 ring-white dark:ring-black", typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.className), "aria-hidden": "true", children: _jsx(TypeIcon, { "aria-hidden": "true", className: "size-2.5" }) }))] }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "mb-1 flex flex-col-reverse items-start justify-start gap-1 sm:flex-row sm:items-center sm:gap-2", children: [_jsx("div", { id: `notification-title-${id}`, className: "text-sm leading-4 font-semibold text-gray-900 dark:text-gray-100", children: title }), _jsx("p", { className: "text-xs text-gray-500", children: _jsx("time", { dateTime: createdAt.toISOString(), children: formatTime(createdAt.getTime()) }) })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("p", { id: `notification-message-${id}`, className: "line-clamp-dynamic text-sm text-gray-800 dark:text-gray-400", style: {
10
29
  WebkitLineClamp: maxLines,
11
- }, "aria-label": `Read more: ${message}`, children: message })) : (_jsx("p", { id: `notification-message-${id}`, className: cn("line-clamp-dynamic text-sm text-gray-800 dark:text-gray-400"), style: {
12
- WebkitLineClamp: maxLines,
13
- }, children: message }))] })] }), _jsxs("div", { className: "flex items-center", role: "group", "aria-label": "Notification actions", children: [!read && (_jsx(Button, { variant: "ghost", size: "icon", "aria-label": `Mark "${title}" as read`, onClick: () => onMarkAsRead(id), "data-testid": "notification-item-mark-as-read", children: _jsx(Eye, { "aria-hidden": "true" }) })), _jsx(Button, { variant: "ghost", size: "icon", "aria-label": `Dismiss "${title}" notification`, onClick: () => onDismiss(id), "data-testid": "notification-item-dismiss", children: _jsx(X, { "aria-hidden": "true" }) })] })] }) }));
30
+ }, children: message }) }), _jsx(TooltipContent, { className: "max-w-80", children: message })] })] })] }));
31
+ const ActionButtons = (_jsxs("div", { className: "flex items-center", role: "group", "aria-label": "Notification actions", children: [!read && canMarkRead && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", "aria-label": `Mark "${title}" as read`, onClick: () => onMarkAsRead(id), "data-testid": "notification-item-mark-as-read", children: _jsx(Eye, { "aria-hidden": "true" }) }) }), _jsx(TooltipContent, { children: "Mark as read" })] })), canDismiss && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", "aria-label": `Dismiss "${title}" notification`, onClick: () => onDismiss(id), "data-testid": "notification-item-dismiss", children: _jsx(X, { "aria-hidden": "true" }) }) }), _jsx(TooltipContent, { children: "Dismiss" })] }))] }));
32
+ return (_jsxs("div", { className: cn("flex items-start gap-4 rounded-md border border-gray-100 bg-white px-4 py-2 shadow-sm dark:border-gray-900 dark:bg-black", !read && "bg-blue-50 dark:bg-blue-900/20"), role: "article", "aria-labelledby": `notification-title-${id}`, "aria-describedby": `notification-message-${id}`, children: [url ? (_jsx(Link, { href: url, className: "flex flex-1 cursor-pointer transition-opacity hover:opacity-80", onClick: handleNotificationClick, "aria-label": `View notification: ${title}`, children: NotificationBody })) : (NotificationBody), ActionButtons] }));
14
33
  };
15
34
  //# sourceMappingURL=notification-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-item.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-item.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,QAAQ,GAAG,CAAC,GACU,EAAE,EAAE;IAC1B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC;IAClE,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,mGAAmG,EACnG,CAAC,IAAI,IAAI,gCAAgC,CAC1C,EACD,IAAI,EAAC,SAAS,qBACG,sBAAsB,EAAE,EAAE,sBACzB,wBAAwB,EAAE,EAAE,YAE9C,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,IAAI,IAAC,SAAS,EAAC,4CAA4C,iBAAa,MAAM,GAAG,EAClF,eAAK,SAAS,EAAC,QAAQ,aACrB,eAAK,SAAS,EAAC,iGAAiG,aAC9G,cACE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAC9B,SAAS,EAAC,kEAAkE,YAE3E,KAAK,GACF,EACN,YAAG,SAAS,EAAC,uBAAuB,YAClC,eAAM,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,YAAG,UAAU,CAAC,SAAS,CAAC,GAAQ,GACrE,IACA,EACL,GAAG,CAAC,CAAC,CAAC,CACL,KAAC,IAAI,IACH,IAAI,EAAE,GAAG,EACT,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAChC,SAAS,EAAE,EAAE,CAAC,yCAAyC,CAAC,EACxD,KAAK,EAAE;wCACL,eAAe,EAAE,QAAQ;qCAC1B,gBACW,cAAc,OAAO,EAAE,YAElC,OAAO,GACH,CACR,CAAC,CAAC,CAAC,CACF,YACE,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAChC,SAAS,EAAE,EAAE,CAAC,6DAA6D,CAAC,EAC5E,KAAK,EAAE;wCACL,eAAe,EAAE,QAAQ;qCAC1B,YAEA,OAAO,GACN,CACL,IACG,IACF,EACN,eAAK,SAAS,EAAC,mBAAmB,EAAC,IAAI,EAAC,OAAO,gBAAY,sBAAsB,aAC9E,CAAC,IAAI,IAAI,CACR,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,gBACC,SAAS,KAAK,WAAW,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,iBACnB,gCAAgC,YAE5C,KAAC,GAAG,mBAAa,MAAM,GAAG,GACnB,CACV,EACD,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,gBACC,YAAY,KAAK,gBAAgB,EAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,iBAChB,2BAA2B,YAEvC,KAAC,CAAC,mBAAa,MAAM,GAAG,GACjB,IACL,IACF,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"notification-item.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-item.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-panel-header.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-panel-header.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAG5E,eAAO,MAAM,uBAAuB,GAAI,mDAIrC,4BAA4B,4CAkC9B,CAAC"}
1
+ {"version":3,"file":"notification-panel-header.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-panel-header.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAG5E,eAAO,MAAM,uBAAuB,GAAI,mDAIrC,4BAA4B,4CA4C9B,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useNotificationPermissions } from "../../../permissions/hooks";
2
3
  import { Button } from "../../../shared/components/ui/button";
3
4
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../../../shared/components/ui/dropdown-menu";
4
5
  import { MoreVertical } from "lucide-react";
5
6
  export const NotificationPanelHeader = ({ notifications, onMarkAllAsRead, onDismissAll, }) => {
6
- return (_jsxs("div", { className: "mb-2 flex items-center justify-between p-2", children: [_jsx("p", { className: "text-xl font-semibold text-gray-800 focus:outline-none dark:text-white", children: "Notifications" }), notifications.length > 0 && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Notification options menu", "aria-haspopup": "menu", children: _jsx(MoreVertical, { className: "size-5", "aria-hidden": "true" }) }) }), _jsxs(DropdownMenuContent, { align: "end", "aria-label": "Notification actions", children: [_jsx(DropdownMenuItem, { onClick: onMarkAllAsRead, "aria-label": "Mark all notifications as read", children: "Mark all as read" }), _jsx(DropdownMenuItem, { onClick: onDismissAll, className: "text-red-500", "aria-label": "Dismiss all notifications", children: "Dismiss all" })] })] }))] }));
7
+ const { canMarkAllRead, canDismissAll } = useNotificationPermissions();
8
+ const showMenu = notifications.length > 0 && (canMarkAllRead || canDismissAll);
9
+ return (_jsxs("div", { className: "mb-2 flex items-center justify-between p-2", children: [_jsx("p", { className: "text-xl font-semibold text-gray-800 focus:outline-none dark:text-white", children: "Notifications" }), showMenu && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Notification options menu", "aria-haspopup": "menu", children: _jsx(MoreVertical, { className: "size-5", "aria-hidden": "true" }) }) }), _jsxs(DropdownMenuContent, { align: "end", "aria-label": "Notification actions", children: [canMarkAllRead && (_jsx(DropdownMenuItem, { onClick: onMarkAllAsRead, "aria-label": "Mark all notifications as read", children: "Mark all as read" })), canDismissAll && (_jsx(DropdownMenuItem, { onClick: onDismissAll, className: "text-red-500", "aria-label": "Dismiss all notifications", children: "Dismiss all" }))] })] }))] }));
7
10
  };
8
11
  //# sourceMappingURL=notification-panel-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-panel-header.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-panel-header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,aAAa,EACb,eAAe,EACf,YAAY,GACiB,EAAE,EAAE;IACjC,OAAO,CACL,eAAK,SAAS,EAAC,4CAA4C,aACzD,YAAG,SAAS,EAAC,wEAAwE,8BAEjF,EACH,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,gBACA,2BAA2B,mBACxB,MAAM,YAEpB,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,GAC/C,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,gBAAY,sBAAsB,aAChE,KAAC,gBAAgB,IAAC,OAAO,EAAE,eAAe,gBAAa,gCAAgC,iCAEpE,EACnB,KAAC,gBAAgB,IACf,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,cAAc,gBACb,2BAA2B,4BAGrB,IACC,IACT,CAChB,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"notification-panel-header.js","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notification-panel-header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,aAAa,EACb,eAAe,EACf,YAAY,GACiB,EAAE,EAAE;IACjC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,0BAA0B,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,CAAC;IAE/E,OAAO,CACL,eAAK,SAAS,EAAC,4CAA4C,aACzD,YAAG,SAAS,EAAC,wEAAwE,8BAEjF,EACH,QAAQ,IAAI,CACX,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,gBACA,2BAA2B,mBACxB,MAAM,YAEpB,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,GAC/C,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,gBAAY,sBAAsB,aAC/D,cAAc,IAAI,CACjB,KAAC,gBAAgB,IACf,OAAO,EAAE,eAAe,gBACb,gCAAgC,iCAG1B,CACpB,EACA,aAAa,IAAI,CAChB,KAAC,gBAAgB,IACf,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,cAAc,gBACb,2BAA2B,4BAGrB,CACpB,IACmB,IACT,CAChB,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { NotificationsProps } from "../../shell.interfaces";
2
- declare const Notifications: ({ notifications, onMarkAllAsRead, onMarkAsRead, onDismissAll, onDismiss, onShowMore, hasMore, unreadCount, maxLines, }: NotificationsProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const Notifications: ({ notifications, onMarkAllAsRead, onMarkAsRead, onDismissAll, onDismiss, onShowMore, onNotificationClick, hasMore, unreadCount, maxLines, }: NotificationsProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default Notifications;
4
4
  //# sourceMappingURL=notifications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notifications.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE,QAAA,MAAM,aAAa,GAAI,wHAUpB,kBAAkB,4CAmFpB,CAAC;AACF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../../lib/shell/components/notifications/notifications.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE,QAAA,MAAM,aAAa,GAAI,6IAWpB,kBAAkB,4CAoFpB,CAAC;AACF,eAAe,aAAa,CAAC"}
@@ -6,8 +6,8 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "../../../shared/compone
6
6
  import { NotificationItem } from "./notification-item";
7
7
  import { NotificationPanelHeader } from "./notification-panel-header";
8
8
  import { Bell, ChevronDown } from "lucide-react";
9
- const Notifications = ({ notifications = [], onMarkAllAsRead, onMarkAsRead, onDismissAll, onDismiss, onShowMore, hasMore, unreadCount = 0, maxLines, }) => {
10
- return (_jsxs(Popover, { children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", type: "button", size: "icon", "aria-label": "Notifications", "aria-haspopup": "dialog", className: "relative size-8 text-white hover:bg-white/10 hover:text-white", children: [_jsx(Bell, { "aria-hidden": "true" }), unreadCount > 0 && (_jsx("span", { className: "bg-destructive text-destructive-foreground absolute top-0 right-0 flex min-w-4 origin-center translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full px-1 text-xs", role: "status", "aria-live": "polite", "aria-label": `${unreadCount} unread notifications`, "data-testid": "notification-count", children: unreadCount }))] }) }) }), _jsx(TooltipContent, { children: "Notifications" })] }), _jsxs(PopoverContent, { className: "w-[98vw] max-w-125 p-2 sm:w-125", align: "end", role: "region", "aria-label": "Notification panel", children: [_jsx(NotificationPanelHeader, { notifications: notifications, onMarkAllAsRead: onMarkAllAsRead, onDismissAll: onDismissAll }), _jsx("ul", { className: "flex max-h-96 flex-col gap-2 overflow-y-auto px-2 pb-4", "aria-label": "Notification list", children: notifications.length === 0 ? (_jsx("li", { className: "p-4 text-center text-gray-500 dark:text-gray-400", children: _jsx("div", { role: "status", "aria-live": "polite", children: _jsx("p", { children: "No new notifications" }) }) })) : (_jsx(_Fragment, { children: notifications.map((notification) => (_jsx("li", { children: _jsx(NotificationItem, { notification: notification, onMarkAsRead: onMarkAsRead, onDismiss: onDismiss, maxLines: maxLines }) }, notification.id))) })) }), hasMore && (_jsx("div", { className: "px-2", children: _jsxs(Button, { variant: "ghost", className: "w-full", onClick: onShowMore, "aria-label": "Load more notifications", "data-testid": "notification-show-more-button", children: ["Show more ", _jsx(ChevronDown, { className: "size-4", "aria-hidden": "true" })] }) }))] })] }));
9
+ const Notifications = ({ notifications = [], onMarkAllAsRead, onMarkAsRead, onDismissAll, onDismiss, onShowMore, onNotificationClick, hasMore, unreadCount = 0, maxLines, }) => {
10
+ return (_jsxs(Popover, { children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", type: "button", size: "icon", "aria-label": "Notifications", "aria-haspopup": "dialog", className: "relative size-8", children: [_jsx(Bell, { "aria-hidden": "true" }), unreadCount > 0 && (_jsx("span", { className: "bg-destructive absolute top-0.5 right-0 flex size-5 origin-center translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full text-[10px] font-semibold text-white", role: "status", "aria-live": "polite", "aria-label": `${unreadCount} unread notifications`, "data-testid": "notification-count", children: unreadCount > 99 ? "99+" : unreadCount }))] }) }) }), _jsx(TooltipContent, { children: "Notifications" })] }), _jsxs(PopoverContent, { className: "w-[98vw] max-w-125 p-2 sm:w-125", align: "end", role: "region", "aria-label": "Notification panel", children: [_jsx(NotificationPanelHeader, { notifications: notifications, onMarkAllAsRead: onMarkAllAsRead, onDismissAll: onDismissAll }), _jsx("ul", { className: "flex max-h-96 flex-col gap-2 overflow-y-auto px-2 pb-4", "aria-label": "Notification list", children: notifications.length === 0 ? (_jsx("li", { className: "p-4 text-center text-gray-500 dark:text-gray-400", children: _jsx("div", { role: "status", "aria-live": "polite", children: _jsx("p", { children: "No new notifications" }) }) })) : (_jsx(_Fragment, { children: notifications.map((notification) => (_jsx("li", { children: _jsx(NotificationItem, { notification: notification, onMarkAsRead: onMarkAsRead, onDismiss: onDismiss, onClick: onNotificationClick, maxLines: maxLines }) }, notification.id))) })) }), hasMore && (_jsx("div", { className: "px-2", children: _jsxs(Button, { variant: "ghost", className: "w-full", onClick: onShowMore, "aria-label": "Load more notifications", "data-testid": "notification-show-more-button", children: ["Show more ", _jsx(ChevronDown, { className: "size-4", "aria-hidden": "true" })] }) }))] })] }));
11
11
  };
12
12
  export default Notifications;
13
13
  //# sourceMappingURL=notifications.js.map