@myrjfa/ui 1.1.0 → 1.1.2

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 (154) hide show
  1. package/dist/chat/ChatMain.d.ts +3 -1
  2. package/dist/chat/ChatMain.d.ts.map +1 -1
  3. package/dist/chat/ChatMain.js +174 -145
  4. package/dist/chat/ChatSidebar.js +7 -8
  5. package/dist/chat/ConversationList.d.ts.map +1 -1
  6. package/dist/chat/ConversationList.js +20 -18
  7. package/dist/chat/ExpensePanel.d.ts +4 -1
  8. package/dist/chat/ExpensePanel.d.ts.map +1 -1
  9. package/dist/chat/ExpensePanel.js +215 -195
  10. package/dist/chat/MessageBubble.d.ts +5 -3
  11. package/dist/chat/MessageBubble.d.ts.map +1 -1
  12. package/dist/chat/MessageBubble.js +185 -103
  13. package/dist/chat/MessageInput.d.ts +8 -1
  14. package/dist/chat/MessageInput.d.ts.map +1 -1
  15. package/dist/chat/MessageInput.js +182 -165
  16. package/dist/chat/MilestonePanel.d.ts +4 -1
  17. package/dist/chat/MilestonePanel.d.ts.map +1 -1
  18. package/dist/chat/MilestonePanel.js +150 -150
  19. package/dist/chat/components/ParticipantSelector.d.ts +11 -0
  20. package/dist/chat/components/ParticipantSelector.d.ts.map +1 -0
  21. package/dist/chat/components/ParticipantSelector.js +17 -0
  22. package/dist/chat/components/SplitInputs.d.ts +11 -0
  23. package/dist/chat/components/SplitInputs.d.ts.map +1 -0
  24. package/dist/chat/components/SplitInputs.js +83 -0
  25. package/dist/chat/components/SplitTypeSelector.d.ts +8 -0
  26. package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -0
  27. package/dist/chat/components/SplitTypeSelector.js +13 -0
  28. package/dist/chat/dialogs/AddMemberDialog.js +30 -90
  29. package/dist/chat/dialogs/CameraDialog.js +38 -86
  30. package/dist/chat/dialogs/CreatePollDialog.d.ts +8 -0
  31. package/dist/chat/dialogs/CreatePollDialog.d.ts.map +1 -0
  32. package/dist/chat/dialogs/CreatePollDialog.js +38 -0
  33. package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts +19 -0
  34. package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts.map +1 -0
  35. package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +52 -0
  36. package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -1
  37. package/dist/chat/dialogs/GroupInfoDialog.js +55 -92
  38. package/dist/chat/dialogs/GroupInfoViewDialog.js +5 -6
  39. package/dist/chat/dialogs/NewChatDialog.d.ts.map +1 -1
  40. package/dist/chat/dialogs/NewChatDialog.js +49 -113
  41. package/dist/chat/dialogs/NewGroupDialog.d.ts.map +1 -1
  42. package/dist/chat/dialogs/NewGroupDialog.js +49 -92
  43. package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -1
  44. package/dist/chat/dialogs/ParticipantsDialog.js +68 -118
  45. package/dist/dashboard/action-buttons.js +4 -5
  46. package/dist/dashboard/app-sidebar.js +47 -129
  47. package/dist/dashboard/card-header.js +1 -2
  48. package/dist/dashboard/dashboard-components.js +3 -5
  49. package/dist/dashboard/data-table.d.ts +2 -1
  50. package/dist/dashboard/data-table.d.ts.map +1 -1
  51. package/dist/dashboard/data-table.js +21 -33
  52. package/dist/dashboard/nav-main.js +4 -5
  53. package/dist/dashboard/nav-secondary.js +2 -25
  54. package/dist/dashboard/stats-card.js +1 -2
  55. package/dist/dashboard/table.js +8 -54
  56. package/dist/header/mobile-nav-item.js +1 -2
  57. package/dist/header/mobile-navbar.js +8 -9
  58. package/dist/header/nav-item.js +1 -2
  59. package/dist/index.d.ts +6 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +7 -1
  62. package/dist/main/footer.js +5 -9
  63. package/dist/main/navbar.js +55 -138
  64. package/dist/main/paginationBar.js +12 -14
  65. package/dist/main/portfolio/portfolioItem.js +1 -2
  66. package/dist/main/portfolio/portfolioPopup.js +16 -17
  67. package/dist/main/review-page.d.ts.map +1 -1
  68. package/dist/main/review-page.js +132 -199
  69. package/dist/misc/accordion.js +8 -34
  70. package/dist/misc/alert-dialog.js +22 -55
  71. package/dist/misc/alert.js +7 -32
  72. package/dist/misc/alertdialogclaude.js +50 -125
  73. package/dist/misc/avatar.js +6 -31
  74. package/dist/misc/badge.js +4 -27
  75. package/dist/misc/button.js +4 -27
  76. package/dist/misc/card.js +12 -40
  77. package/dist/misc/carousel.js +37 -61
  78. package/dist/misc/checkbox.js +2 -25
  79. package/dist/misc/command.js +18 -49
  80. package/dist/misc/datepicker.js +66 -76
  81. package/dist/misc/dialog.js +20 -52
  82. package/dist/misc/document-upload-button.d.ts +12 -0
  83. package/dist/misc/document-upload-button.d.ts.map +1 -0
  84. package/dist/misc/document-upload-button.js +27 -0
  85. package/dist/misc/dropdown-menu.js +30 -67
  86. package/dist/misc/empty-state.d.ts +10 -0
  87. package/dist/misc/empty-state.d.ts.map +1 -0
  88. package/dist/misc/empty-state.js +5 -0
  89. package/dist/misc/faq.js +2 -3
  90. package/dist/misc/file-preview.js +43 -97
  91. package/dist/misc/filter.d.ts.map +1 -1
  92. package/dist/misc/filter.js +18 -21
  93. package/dist/misc/filterBar.js +136 -160
  94. package/dist/misc/form.js +39 -60
  95. package/dist/misc/image-compressor.d.ts +29 -0
  96. package/dist/misc/image-compressor.d.ts.map +1 -0
  97. package/dist/misc/image-compressor.js +70 -0
  98. package/dist/misc/image-cropper.d.ts +10 -0
  99. package/dist/misc/image-cropper.d.ts.map +1 -0
  100. package/dist/misc/image-cropper.js +44 -0
  101. package/dist/misc/input.d.ts.map +1 -1
  102. package/dist/misc/input.js +2 -25
  103. package/dist/misc/label.js +2 -25
  104. package/dist/misc/line-carousel.js +3 -13
  105. package/dist/misc/multiImageUploader.d.ts +2 -1
  106. package/dist/misc/multiImageUploader.d.ts.map +1 -1
  107. package/dist/misc/multiImageUploader.js +26 -3
  108. package/dist/misc/newsLetter.js +19 -79
  109. package/dist/misc/notification.d.ts +1 -2
  110. package/dist/misc/notification.d.ts.map +1 -1
  111. package/dist/misc/notification.js +89 -125
  112. package/dist/misc/pagination.js +16 -45
  113. package/dist/misc/password-eye.js +2 -3
  114. package/dist/misc/popover.d.ts.map +1 -1
  115. package/dist/misc/popover.js +8 -34
  116. package/dist/misc/progress.js +2 -25
  117. package/dist/misc/pwa-install-button.d.ts +9 -0
  118. package/dist/misc/pwa-install-button.d.ts.map +1 -0
  119. package/dist/misc/pwa-install-button.js +158 -0
  120. package/dist/misc/scroll-area.js +5 -29
  121. package/dist/misc/searchBar.js +27 -31
  122. package/dist/misc/searchBox.js +18 -22
  123. package/dist/misc/select.d.ts.map +1 -1
  124. package/dist/misc/select.js +22 -54
  125. package/dist/misc/separator.js +2 -25
  126. package/dist/misc/share.js +48 -104
  127. package/dist/misc/sheet.js +21 -53
  128. package/dist/misc/sidebar.js +112 -153
  129. package/dist/misc/skeleton.d.ts +36 -1
  130. package/dist/misc/skeleton.d.ts.map +1 -1
  131. package/dist/misc/skeleton.js +41 -27
  132. package/dist/misc/slider.js +3 -26
  133. package/dist/misc/starRating.js +5 -15
  134. package/dist/misc/stateCard.js +7 -8
  135. package/dist/misc/switch.d.ts +5 -0
  136. package/dist/misc/switch.d.ts.map +1 -0
  137. package/dist/misc/switch.js +8 -0
  138. package/dist/misc/tabs.js +8 -34
  139. package/dist/misc/textarea.js +2 -25
  140. package/dist/misc/tile.js +32 -93
  141. package/dist/misc/tooltip.js +8 -34
  142. package/dist/misc/whatsapp-help.d.ts +9 -0
  143. package/dist/misc/whatsapp-help.d.ts.map +1 -0
  144. package/dist/misc/whatsapp-help.js +13 -0
  145. package/dist/profile/socialLink.d.ts +1 -1
  146. package/dist/profile/socialLink.d.ts.map +1 -1
  147. package/dist/profile/socialLink.js +53 -69
  148. package/dist/utils/permissions.d.ts +7 -0
  149. package/dist/utils/permissions.d.ts.map +1 -0
  150. package/dist/utils/permissions.js +38 -0
  151. package/package.json +6 -4
  152. package/dist/main/portfolio/temp-page.d.ts +0 -2
  153. package/dist/main/portfolio/temp-page.d.ts.map +0 -1
  154. package/dist/main/portfolio/temp-page.js +0 -102
@@ -2,9 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { usePathname, useRouter } from "next/navigation";
4
4
  import { SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "../misc/sidebar";
5
- export function NavMain(_a) {
6
- var items = _a.items;
7
- var pathname = usePathname();
8
- var router = useRouter();
9
- return (_jsx(SidebarGroup, { children: _jsx(SidebarGroupContent, { className: "flex flex-col gap-2", children: _jsx(SidebarMenu, { children: items.map(function (item) { return (_jsx(SidebarMenuItem, { children: _jsxs(SidebarMenuButton, { tooltip: item.title, className: "cursor-pointer", onClick: function () { return router.push(item.url); }, isActive: pathname.includes(item.url), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title })] }) }, item.title)); }) }) }) }));
5
+ export function NavMain({ items, }) {
6
+ const pathname = usePathname();
7
+ const router = useRouter();
8
+ return (_jsx(SidebarGroup, { children: _jsx(SidebarGroupContent, { className: "flex flex-col gap-2", children: _jsx(SidebarMenu, { children: items.map((item) => (_jsx(SidebarMenuItem, { children: _jsxs(SidebarMenuButton, { tooltip: item.title, className: "cursor-pointer", onClick: () => router.push(item.url), isActive: pathname.includes(item.url), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title })] }) }, item.title))) }) }) }));
10
9
  }
@@ -1,29 +1,6 @@
1
1
  "use client";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
23
- };
24
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
3
  import { SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "../misc/sidebar";
26
- export function NavSecondary(_a) {
27
- var items = _a.items, props = __rest(_a, ["items"]);
28
- return (_jsx(SidebarGroup, __assign({}, props, { children: _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: items.map(function (item) { return (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { asChild: true, children: _jsxs("a", { href: item.url, children: [_jsx(item.icon, {}), _jsx("span", { children: item.title })] }) }) }, item.title)); }) }) }) })));
4
+ export function NavSecondary({ items, ...props }) {
5
+ return (_jsx(SidebarGroup, { ...props, children: _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: items.map((item) => (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { asChild: true, children: _jsxs("a", { href: item.url, children: [_jsx(item.icon, {}), _jsx("span", { children: item.title })] }) }) }, item.title))) }) }) }));
29
6
  }
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Card, CardContent } from '../misc/card';
3
- export function StatsCard(_a) {
4
- var icon = _a.icon, title = _a.title, count = _a.count;
3
+ export function StatsCard({ icon, title, count, }) {
5
4
  return (_jsx(Card, { children: _jsx(CardContent, { className: "flex items-center p-6", children: _jsxs("div", { className: "flex items-center gap-5", children: [_jsx("div", { className: "p-2 bg-blue-100 rounded-full", children: icon }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: title }), _jsx("p", { className: "text-2xl font-bold", children: count })] })] }) }) }));
6
5
  }
@@ -1,67 +1,21 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __rest = (this && this.__rest) || function (s, e) {
13
- var t = {};
14
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
- t[p] = s[p];
16
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
- t[p[i]] = s[p[i]];
20
- }
21
- return t;
22
- };
23
1
  import { jsx as _jsx } from "react/jsx-runtime";
24
2
  // components/ui/table.tsx
25
3
  import { cn } from "@myrjfa/state/dist/lib/utils";
26
4
  import * as React from "react";
27
- var Table = React.forwardRef(function (_a, ref) {
28
- var className = _a.className, props = __rest(_a, ["className"]);
29
- return (_jsx("div", { className: "relative w-full overflow-auto", children: _jsx("table", __assign({ ref: ref, className: cn("w-full caption-bottom text-sm", className) }, props)) }));
30
- });
5
+ const Table = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { className: "relative w-full overflow-auto", children: _jsx("table", { ref: ref, className: cn("w-full caption-bottom text-sm", className), ...props }) })));
31
6
  Table.displayName = "Table";
32
- var TableHeader = React.forwardRef(function (_a, ref) {
33
- var className = _a.className, props = __rest(_a, ["className"]);
34
- return (_jsx("thead", __assign({ ref: ref, className: cn("[&_tr]:border-b", className) }, props)));
35
- });
7
+ const TableHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("thead", { ref: ref, className: cn("[&_tr]:border-b", className), ...props })));
36
8
  TableHeader.displayName = "TableHeader";
37
- var TableBody = React.forwardRef(function (_a, ref) {
38
- var className = _a.className, props = __rest(_a, ["className"]);
39
- return (_jsx("tbody", __assign({ ref: ref, className: cn("[&_tr:last-child]:border-0", className) }, props)));
40
- });
9
+ const TableBody = React.forwardRef(({ className, ...props }, ref) => (_jsx("tbody", { ref: ref, className: cn("[&_tr:last-child]:border-0", className), ...props })));
41
10
  TableBody.displayName = "TableBody";
42
- var TableFooter = React.forwardRef(function (_a, ref) {
43
- var className = _a.className, props = __rest(_a, ["className"]);
44
- return (_jsx("tfoot", __assign({ ref: ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className) }, props)));
45
- });
11
+ const TableFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx("tfoot", { ref: ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })));
46
12
  TableFooter.displayName = "TableFooter";
47
- var TableRow = React.forwardRef(function (_a, ref) {
48
- var className = _a.className, props = __rest(_a, ["className"]);
49
- return (_jsx("tr", __assign({ ref: ref, className: cn("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className) }, props)));
50
- });
13
+ const TableRow = React.forwardRef(({ className, ...props }, ref) => (_jsx("tr", { ref: ref, className: cn("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className), ...props })));
51
14
  TableRow.displayName = "TableRow";
52
- var TableHead = React.forwardRef(function (_a, ref) {
53
- var className = _a.className, props = __rest(_a, ["className"]);
54
- return (_jsx("th", __assign({ ref: ref, className: cn("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", className) }, props)));
55
- });
15
+ const TableHead = React.forwardRef(({ className, ...props }, ref) => (_jsx("th", { ref: ref, className: cn("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", className), ...props })));
56
16
  TableHead.displayName = "TableHead";
57
- var TableCell = React.forwardRef(function (_a, ref) {
58
- var className = _a.className, props = __rest(_a, ["className"]);
59
- return (_jsx("td", __assign({ ref: ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className) }, props)));
60
- });
17
+ const TableCell = React.forwardRef(({ className, ...props }, ref) => (_jsx("td", { ref: ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className), ...props })));
61
18
  TableCell.displayName = "TableCell";
62
- var TableCaption = React.forwardRef(function (_a, ref) {
63
- var className = _a.className, props = __rest(_a, ["className"]);
64
- return (_jsx("caption", __assign({ ref: ref, className: cn("mt-4 text-sm text-muted-foreground", className) }, props)));
65
- });
19
+ const TableCaption = React.forwardRef(({ className, ...props }, ref) => (_jsx("caption", { ref: ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })));
66
20
  TableCaption.displayName = "TableCaption";
67
21
  export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
@@ -1,7 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "@myrjfa/state/dist/lib/utils";
3
3
  import Link from "next/link";
4
- export function MobileNavItem(_a) {
5
- var label = _a.label, href = _a.href, className = _a.className, icon = _a.icon;
4
+ export function MobileNavItem({ label, href, className, icon }) {
6
5
  return (_jsxs(Link, { href: href, className: cn("flex w-full cursor-pointer items-center rounded-md p-2 gap-1 font-medium text-muted-foreground hover:text-foreground", className), children: [icon && _jsx("span", { children: icon }), label] }));
7
6
  }
@@ -2,21 +2,20 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Menu, X } from "lucide-react";
4
4
  import { useEffect, useState } from "react";
5
- export function MobileNavbar(_a) {
6
- var children = _a.children;
7
- var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
8
- useEffect(function () {
9
- var overflow = isOpen ? "hidden" : "auto";
5
+ export function MobileNavbar({ children }) {
6
+ const [isOpen, setIsOpen] = useState(false);
7
+ useEffect(() => {
8
+ const overflow = isOpen ? "hidden" : "auto";
10
9
  document.documentElement.style.overflow = overflow;
11
10
  }, [isOpen]);
12
- useEffect(function () {
13
- var closeHamburgerNavigation = function () { return setIsOpen(false); };
11
+ useEffect(() => {
12
+ const closeHamburgerNavigation = () => setIsOpen(false);
14
13
  window.addEventListener("orientationchange", closeHamburgerNavigation);
15
14
  window.addEventListener("resize", closeHamburgerNavigation);
16
- return function () {
15
+ return () => {
17
16
  window.removeEventListener("orientationchange", closeHamburgerNavigation);
18
17
  window.removeEventListener("resize", closeHamburgerNavigation);
19
18
  };
20
19
  }, []);
21
- return (_jsxs("div", { className: "md:hidden", children: [_jsx("button", { className: "md:hidden", onClick: function () { return setIsOpen(!isOpen); }, children: isOpen ? _jsx(X, {}) : _jsx(Menu, {}) }), isOpen && (_jsx("div", { className: "fixed inset-0 top-[50px] z-40 size-full bg-black/40 animate-in slide-in-from-bottom-24 md:hidden", onClick: function () { return setIsOpen(false); }, children: children }))] }));
20
+ return (_jsxs("div", { className: "md:hidden", children: [_jsx("button", { className: "md:hidden", onClick: () => setIsOpen(!isOpen), children: isOpen ? _jsx(X, {}) : _jsx(Menu, {}) }), isOpen && (_jsx("div", { className: "fixed inset-0 top-[50px] z-40 size-full bg-black/40 animate-in slide-in-from-bottom-24 md:hidden", onClick: () => setIsOpen(false), children: children }))] }));
22
21
  }
@@ -1,7 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "@myrjfa/state/dist/lib/utils";
3
3
  import Link from "next/link";
4
- export function NavItem(_a) {
5
- var label = _a.label, href = _a.href, className = _a.className, icon = _a.icon, external = _a.external;
4
+ export function NavItem({ label, href, className, icon, external }) {
6
5
  return (_jsxs(Link, { href: href, target: external ? "_blank" : undefined, rel: external ? "noopener noreferrer" : undefined, className: cn("text-muted-foreground hover:text-foreground flex cursor-pointer items-center text-sm font-medium transition-colors gap-1", className), children: [icon && _jsx("span", { children: icon }), label] }));
7
6
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './misc/button';
2
+ export * from './misc/empty-state';
2
3
  export * from './misc/accordion';
3
4
  export * from './misc/alert';
4
5
  export * from './misc/alertdialogclaude';
@@ -54,4 +55,9 @@ export * from './main/footer';
54
55
  export * from './main/navbar';
55
56
  export * from './main/paginationBar';
56
57
  export * from './main/review-page';
58
+ export * from './misc/image-cropper';
59
+ export * from './misc/pwa-install-button';
60
+ export * from './misc/whatsapp-help';
61
+ export * from './misc/image-compressor';
62
+ export * from './misc/skeleton';
57
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- // Export all your shared UI components
2
1
  export * from './misc/button';
2
+ export * from './misc/empty-state';
3
3
  export * from './misc/accordion';
4
4
  export * from './misc/alert';
5
5
  export * from './misc/alertdialogclaude';
@@ -55,3 +55,9 @@ export * from './main/footer';
55
55
  export * from './main/navbar';
56
56
  export * from './main/paginationBar';
57
57
  export * from './main/review-page';
58
+ export * from './misc/image-cropper';
59
+ // New components — features #9, #10, #21, #26
60
+ export * from './misc/pwa-install-button';
61
+ export * from './misc/whatsapp-help';
62
+ export * from './misc/image-compressor';
63
+ export * from './misc/skeleton';
@@ -5,7 +5,7 @@ import Link from "next/link";
5
5
  import { Card } from "../misc/card";
6
6
  import NewsletterSubscribe from "../misc/newsLetter";
7
7
  import { Separator } from "../misc/separator";
8
- var footerItems = [
8
+ const footerItems = [
9
9
  {
10
10
  "title": "Company",
11
11
  "fields": {
@@ -31,17 +31,13 @@ var footerItems = [
31
31
  }
32
32
  }
33
33
  ];
34
- var Footer = function (_a) {
35
- var _b = _a.dark, dark = _b === void 0 ? false : _b;
36
- var theme = dark
34
+ const Footer = ({ dark = false }) => {
35
+ const theme = dark
37
36
  ? "bg-foreground text-muted border-border"
38
37
  : "bg-background text-muted-foreground border-border";
39
- var iconColor = dark
38
+ const iconColor = dark
40
39
  ? "text-muted hover:text-white"
41
40
  : "text-muted-foreground hover:text-foreground";
42
- return (_jsxs("footer", { className: "h-full md:-mt-20", children: [_jsx("div", { className: "w-full px-6 my-5 md:translate-y-5/8 md:px-12 md:mb-5", children: _jsx(Card, { className: "relative bg-muted p-6 rounded-lg shadow-md mx-auto w-4/5 flex flex-col md:flex-row items-center justify-between gap-6 md:p-10", children: _jsxs("div", { className: "flex-1 text-center md:text-left", children: [_jsx("h3", { className: "text-2xl font-bold text-foreground", children: "Subscribe Newsletter" }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Get inspired! Receive travel discounts, tips, and behind-the-scenes stories." }), _jsx(NewsletterSubscribe, {})] }) }) }), _jsxs("div", { className: "w-full border-t ".concat(theme, " pb-10 pt-10 sm:pt-30 md:pt-30"), children: [_jsxs("div", { className: "container mx-auto px-6 md:px-12 grid grid-cols-2 gap-10 md:grid-cols-5", children: [_jsxs("div", { className: "col-span-2", children: [_jsx("div", { className: "text-2xl font-semibold mb-4", children: "TrippEaze" }), _jsx("p", { className: "text-sm mb-4", children: "Your trusted travel partner for seamless adventures." }), _jsxs("div", { className: "flex gap-4", children: [_jsx("a", { href: "https://www.instagram.com/trippeaze/", target: "_blank", rel: "noopener noreferrer", className: "transition-colors ".concat(iconColor), children: _jsx(Icon, { icon: "mdi:instagram", className: "w-5 h-5" }) }), _jsx("a", { href: "https://wa.me/918482944029", target: "_blank", rel: "noopener noreferrer", className: "transition-colors ".concat(iconColor), children: _jsx(Icon, { icon: "mdi:whatsapp", className: "w-5 h-5" }) }), _jsx("a", { href: "https://www.youtube.com/@TrippEaze", target: "_blank", rel: "noopener noreferrer", className: "transition-colors ".concat(iconColor), children: _jsx(Icon, { icon: "mdi:youtube", className: "w-5 h-5" }) }), _jsx("a", { href: "https://www.facebook.com/profile.php?id=61576541488437", target: "_blank", rel: "noopener noreferrer", className: "transition-colors ".concat(iconColor), children: _jsx(Icon, { icon: "mdi:facebook", className: "w-5 h-5" }) }), _jsx("a", { href: "mailto:contact@trippeaze.com", className: "transition-colors ".concat(iconColor), children: _jsx(Mail, { className: "w-5 h-5" }) })] })] }), footerItems.map(function (section) { return (_jsxs("div", { children: [_jsx("h4", { className: "text-lg font-medium ".concat(iconColor, " mb-3"), children: section.title }), _jsx("nav", { className: "flex flex-col gap-2 text-sm", children: Object.entries(section.fields).map(function (_a) {
43
- var label = _a[0], href = _a[1];
44
- return (_jsx(Link, { href: href, className: "hover:text-foreground transition-colors", children: label }, label));
45
- }) })] }, section.title)); })] }), _jsxs("div", { className: "w-full mt-10", children: [_jsx(Separator, {}), _jsxs("p", { className: "text-xs text-muted-foreground text-center mt-4", children: ["\u00A9 ", new Date().getFullYear(), " TrippEaze. All rights reserved."] })] })] })] }));
41
+ return (_jsxs("footer", { className: "h-full md:-mt-20", children: [_jsx("div", { className: "w-full px-6 my-5 md:translate-y-5/8 md:px-12 md:mb-5", children: _jsx(Card, { className: "relative bg-muted p-6 rounded-lg shadow-md mx-auto w-4/5 flex flex-col md:flex-row items-center justify-between gap-6 md:p-10", children: _jsxs("div", { className: "flex-1 text-center md:text-left", children: [_jsx("h3", { className: "text-2xl font-bold text-foreground", children: "Subscribe Newsletter" }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Get inspired! Receive travel discounts, tips, and behind-the-scenes stories." }), _jsx(NewsletterSubscribe, {})] }) }) }), _jsxs("div", { className: `w-full border-t ${theme} pb-10 pt-10 sm:pt-30 md:pt-30`, children: [_jsxs("div", { className: "container mx-auto px-6 md:px-12 grid grid-cols-2 gap-10 md:grid-cols-5", children: [_jsxs("div", { className: "col-span-2", children: [_jsx("div", { className: `text-2xl font-semibold mb-4`, children: "TrippEaze" }), _jsx("p", { className: "text-sm mb-4", children: "Your trusted travel partner for seamless adventures." }), _jsxs("div", { className: "flex gap-4", children: [_jsx("a", { href: "https://www.instagram.com/trippeaze/", target: "_blank", rel: "noopener noreferrer", className: `transition-colors ${iconColor}`, children: _jsx(Icon, { icon: "mdi:instagram", className: "w-5 h-5" }) }), _jsx("a", { href: "https://wa.me/918482944029", target: "_blank", rel: "noopener noreferrer", className: `transition-colors ${iconColor}`, children: _jsx(Icon, { icon: "mdi:whatsapp", className: "w-5 h-5" }) }), _jsx("a", { href: "https://www.youtube.com/@TrippEaze", target: "_blank", rel: "noopener noreferrer", className: `transition-colors ${iconColor}`, children: _jsx(Icon, { icon: "mdi:youtube", className: "w-5 h-5" }) }), _jsx("a", { href: "https://www.facebook.com/profile.php?id=61576541488437", target: "_blank", rel: "noopener noreferrer", className: `transition-colors ${iconColor}`, children: _jsx(Icon, { icon: "mdi:facebook", className: "w-5 h-5" }) }), _jsx("a", { href: "mailto:contact@trippeaze.com", className: `transition-colors ${iconColor}`, children: _jsx(Mail, { className: "w-5 h-5" }) })] })] }), footerItems.map((section) => (_jsxs("div", { children: [_jsx("h4", { className: `text-lg font-medium ${iconColor} mb-3`, children: section.title }), _jsx("nav", { className: "flex flex-col gap-2 text-sm", children: Object.entries(section.fields).map(([label, href]) => (_jsx(Link, { href: href, className: "hover:text-foreground transition-colors", children: label }, label))) })] }, section.title)))] }), _jsxs("div", { className: "w-full mt-10", children: [_jsx(Separator, {}), _jsxs("p", { className: "text-xs text-muted-foreground text-center mt-4", children: ["\u00A9 ", new Date().getFullYear(), " TrippEaze. All rights reserved."] })] })] })] }));
46
42
  };
47
43
  export default Footer;
@@ -1,48 +1,12 @@
1
1
  'use client';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
39
3
  import { Popover, PopoverContent, PopoverTrigger } from "@radix-ui/react-popover";
40
4
  import { Separator } from "@radix-ui/react-separator";
41
- import { logoutUser } from "@myrjfa/state/dist/lib/auth";
5
+ import { logoutUser } from "@myrjfa/state/dist/lib/actions/auth";
42
6
  import { isLoggedInAtom, userAtom, userLoadingAtom } from "@myrjfa/state/dist/lib/userAtom";
43
7
  import { opportunityTypeOptions } from "@myrjfa/state/dist/lib/models/opportunities/opportunity";
44
8
  import { useAtom, useAtomValue } from "jotai";
45
- import { ChevronDown, Globe, Heart, LayoutDashboardIcon, Store, Target, Luggage, MessageCircle } from "lucide-react";
9
+ import { ChevronDown, Globe, Heart, LayoutDashboardIcon, Store, Target, Luggage } from "lucide-react";
46
10
  import Link from "next/link";
47
11
  import { useRouter } from "next/navigation";
48
12
  import { useEffect, useState } from "react";
@@ -54,128 +18,81 @@ import { Avatar, AvatarFallback, AvatarImage } from "../misc/avatar";
54
18
  import { Button } from "../misc/button";
55
19
  import { Label } from "../misc/label";
56
20
  import { MobileNotificationBell, NotificationBell } from "../misc/notification";
57
- export default function Navbar(_a) {
58
- var _this = this;
59
- var _b, _c, _d;
60
- var _e = _a.dark, dark = _e === void 0 ? false : _e;
61
- var router = useRouter();
62
- var _f = useAtom(userAtom), currentUser = _f[0], setCurrentUser = _f[1];
63
- var loading = useAtomValue(userLoadingAtom);
64
- var _g = useAtom(isLoggedInAtom), isLoggedIn = _g[0], setIsLoggedIn = _g[1];
65
- var _h = useState(false), scrolled = _h[0], setScrolled = _h[1];
66
- useEffect(function () {
67
- var handleScroll = function () {
68
- var isScrolled = window.scrollY > 10;
21
+ export default function Navbar({ dark = false }) {
22
+ var _a, _b;
23
+ const router = useRouter();
24
+ const [currentUser, setCurrentUser] = useAtom(userAtom);
25
+ const loading = useAtomValue(userLoadingAtom);
26
+ const [isLoggedIn, setIsLoggedIn] = useAtom(isLoggedInAtom);
27
+ const [scrolled, setScrolled] = useState(false);
28
+ useEffect(() => {
29
+ const handleScroll = () => {
30
+ const isScrolled = window.scrollY > 10;
69
31
  if (isScrolled !== scrolled) {
70
32
  setScrolled(isScrolled);
71
33
  }
72
34
  };
73
35
  window.addEventListener("scroll", handleScroll);
74
- return function () {
36
+ return () => {
75
37
  window.removeEventListener("scroll", handleScroll);
76
38
  };
77
39
  }, [scrolled]);
78
40
  if (loading)
79
41
  return _jsx("div", { className: "w-full h-screen flex items-center justify-center", children: "Loading..." });
80
- var logout = function () { return __awaiter(_this, void 0, void 0, function () {
81
- var role, response;
42
+ const logout = async () => {
82
43
  var _a;
83
- return __generator(this, function (_b) {
84
- switch (_b.label) {
85
- case 0:
86
- role = (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user";
87
- setCurrentUser(null);
88
- setIsLoggedIn(false);
89
- return [4 /*yield*/, logoutUser(role)];
90
- case 1:
91
- response = _b.sent();
92
- if (!(response === null || response === void 0 ? void 0 : response.error)) return [3 /*break*/, 3];
93
- return [4 /*yield*/, showAlert(response.error)];
94
- case 2:
95
- _b.sent();
96
- return [3 /*break*/, 5];
97
- case 3: return [4 /*yield*/, showAlert((_a = response.message) !== null && _a !== void 0 ? _a : "Logged out successfully")];
98
- case 4:
99
- _b.sent();
100
- _b.label = 5;
101
- case 5: return [2 /*return*/];
102
- }
103
- });
104
- }); };
105
- var navbarBg = scrolled || window.scrollY > 10
44
+ const role = (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user";
45
+ setCurrentUser(null);
46
+ setIsLoggedIn(false);
47
+ const response = await logoutUser(role);
48
+ if (response === null || response === void 0 ? void 0 : response.error) {
49
+ await showAlert(response.error);
50
+ }
51
+ else
52
+ await showAlert((_a = response.message) !== null && _a !== void 0 ? _a : "Logged out successfully");
53
+ };
54
+ const navbarBg = scrolled || window.scrollY > 10
106
55
  ? dark
107
56
  ? "bg-foreground/50 backdrop-blur-md"
108
57
  : "bg-background/50 backdrop-blur-md"
109
58
  : "bg-transparent";
110
- var navbarBorder = scrolled || window.scrollY > 10 ? "border-b border-border/30 shadow-lg" : "";
111
- var textColor = dark ? "text-gray-200" : "text-foreground";
112
- var navItemColor = dark
59
+ const navbarBorder = scrolled || window.scrollY > 10 ? "border-b border-border/30 shadow-lg" : "";
60
+ const textColor = dark ? "text-gray-200" : "text-foreground";
61
+ const navItemColor = dark
113
62
  ? "hover:text-white text-gray-250"
114
63
  : "hover:text-foreground text-gray-750";
115
- return (_jsx("header", { className: "fixed top-0 left-0 z-[100] mx-auto transition-all duration-300 w-full ".concat(navbarBg, " ").concat(textColor, " ").concat(navbarBorder), children: _jsxs("div", { className: "mx-auto flex items-center justify-between gap-10 py-4 px-4 lg:px-8", children: [_jsxs(Link, { href: "/", className: "flex items-center gap-3", children: [_jsxs(Avatar, { className: "ml-2 -mr-4.5", children: [_jsx(AvatarImage, { src: "/images/logoicon.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }), _jsx("span", { className: "font-heading text-xl font-bold", children: "rippeaze" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("nav", { className: "hidden md:flex items-center gap-10 justify-end", children: [_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { className: "flex items-center gap-1 text-sm font-medium cursor-pointer ".concat(navItemColor), children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { children: "Opportunities" }), _jsx(ChevronDown, { className: "h-4 w-4" })] }) }), _jsx(PopoverContent, { className: "w-56 p-2 mt-3 bg-white rounded-lg shadow-lg border", align: "start", sideOffset: 5, children: _jsx("div", { className: "flex flex-col", children: opportunityTypeOptions.map(function (opt) { return (_jsxs(Link, { href: "/opportunities?type=".concat(opt.value), className: "px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded-md flex flex-col", children: [_jsx("span", { className: "font-medium", children: opt.label }), _jsx("span", { className: "text-xs text-gray-500", children: opt.description })] }, opt.value)); }) }) })] }), _jsx(NavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages", className: navItemColor }), _jsx(NavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs", className: navItemColor }), isLoggedIn && _jsx(NavItem, { icon: _jsx(MessageCircle, { className: "h-5 w-5" }), label: "Chat", href: "/chat", className: navItemColor, external: true }), currentUser ? _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact", className: navItemColor })
116
- : _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host", className: navItemColor }), isLoggedIn && _jsx(NotificationBell, { id: (_b = currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) !== null && _b !== void 0 ? _b : null, navItemColor: navItemColor })] }), _jsx("div", { className: "hidden md:flex items-center gap-2", children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "link", className: "flex w-full gap-1 cursor-pointer", children: _jsxs(Avatar, { className: "ml-5 mr-4.5", children: [_jsx(AvatarImage, { src: (_c = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _c !== void 0 ? _c : "/images/profile_placeholder.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }) }) }), _jsx(PopoverContent, { className: "w-full p-0 mt-3 bg-".concat(dark ? "primary" : "white", " rounded-lg shadow-lg"), align: "end", sideOffset: 5, children: _jsxs("div", { className: "py-2 w-full", children: [_jsxs("div", { className: "px-4 py-3 border-b w-full", children: [_jsx("p", { className: "text-sm font-medium", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" }), _jsx("p", { className: "text-xs text-gray-500", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.email) || "user@example.com" })] }), _jsxs("div", { className: "flex flex-col", children: [isLoggedIn ?
117
- _jsxs(Link, { href: "/profile/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user", "/").concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"), className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: (_d = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _d !== void 0 ? _d : "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Profile"] }) :
118
- _jsxs(Button, { variant: "ghost", onClick: function () { return router.push('/auth/login?role=user'); }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] }), isLoggedIn && _jsxs(Link, { href: "/overview/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'), className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsx(LayoutDashboardIcon, { className: "h-4 w-4" }), "Dashboard"] }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
64
+ return (_jsx("header", { className: `fixed top-0 left-0 z-[100] mx-auto transition-all duration-300 w-full ${navbarBg} ${textColor} ${navbarBorder}`, children: _jsxs("div", { className: "mx-auto flex items-center justify-between gap-10 py-4 px-4 lg:px-8", children: [_jsxs(Link, { href: "/", className: "flex items-center gap-3", children: [_jsxs(Avatar, { className: "ml-2 -mr-4.5", children: [_jsx(AvatarImage, { src: "/images/logoicon.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }), _jsx("span", { className: "font-heading text-xl font-bold", children: "rippeaze" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("nav", { className: "hidden md:flex items-center gap-10 justify-end", children: [_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { className: `flex items-center gap-1 text-sm font-medium cursor-pointer ${navItemColor}`, children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { children: "Opportunities" }), _jsx(ChevronDown, { className: "h-4 w-4" })] }) }), _jsx(PopoverContent, { className: "w-56 p-2 mt-3 bg-white rounded-lg shadow-lg border", align: "start", sideOffset: 5, children: _jsx("div", { className: "flex flex-col", children: opportunityTypeOptions.map((opt) => (_jsxs(Link, { href: `/opportunities?type=${opt.value}`, className: "px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded-md flex flex-col", children: [_jsx("span", { className: "font-medium", children: opt.label }), _jsx("span", { className: "text-xs text-gray-500", children: opt.description })] }, opt.value))) }) })] }), _jsx(NavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages", className: navItemColor }), _jsx(NavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs", className: navItemColor }), currentUser ? _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact", className: navItemColor })
65
+ : _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host", className: navItemColor }), isLoggedIn && _jsx(NotificationBell, { navItemColor: navItemColor })] }), _jsx("div", { className: "hidden md:flex items-center gap-2", children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "link", className: "flex w-full gap-1 cursor-pointer", children: _jsxs(Avatar, { className: "ml-5 mr-4.5", children: [_jsx(AvatarImage, { src: (_a = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _a !== void 0 ? _a : "/images/profile_placeholder.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }) }) }), _jsx(PopoverContent, { className: `w-full p-0 mt-3 bg-${dark ? "primary" : "white"} rounded-lg shadow-lg`, align: "end", sideOffset: 5, children: _jsxs("div", { className: "py-2 w-full", children: [_jsxs("div", { className: "px-4 py-3 border-b w-full", children: [_jsx("p", { className: "text-sm font-medium", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" }), _jsx("p", { className: "text-xs text-gray-500", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.email) || "user@example.com" })] }), _jsxs("div", { className: "flex flex-col", children: [isLoggedIn ?
66
+ _jsxs(Link, { href: `/profile/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user"}/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"}`, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: (_b = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _b !== void 0 ? _b : "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Profile"] }) :
67
+ _jsxs(Button, { variant: "ghost", onClick: () => router.push('/auth/login?role=user'), className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] }), isLoggedIn && _jsxs(Link, { href: `/overview/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'}`, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsx(LayoutDashboardIcon, { className: "h-4 w-4" }), "Dashboard"] }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
119
68
  _jsxs(Link, { href: "/opportunities/favourites", className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsx(Heart, { className: "h-4 w-4" }), "Favourites"] }), (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "host" ?
120
- _jsxs(Button, { variant: "ghost", onClick: function () { return __awaiter(_this, void 0, void 0, function () {
121
- return __generator(this, function (_a) {
122
- switch (_a.label) {
123
- case 0: return [4 /*yield*/, logout()];
124
- case 1:
125
- _a.sent();
126
- router.push('/auth/login?role=user');
127
- return [2 /*return*/];
128
- }
129
- });
130
- }); }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] })
69
+ _jsxs(Button, { variant: "ghost", onClick: async () => {
70
+ await logout();
71
+ router.push('/auth/login?role=user');
72
+ }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] })
131
73
  :
132
- _jsxs(Button, { variant: "ghost", onClick: function () { return __awaiter(_this, void 0, void 0, function () {
133
- return __generator(this, function (_a) {
134
- switch (_a.label) {
135
- case 0:
136
- if (!isLoggedIn) return [3 /*break*/, 2];
137
- return [4 /*yield*/, logout()];
138
- case 1:
139
- _a.sent();
140
- _a.label = 2;
141
- case 2:
142
- router.push('/auth/login?role=host');
143
- return [2 /*return*/];
144
- }
145
- });
146
- }); }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "H" })] }), "Login As Business"] }), _jsx(Separator, { className: "my-1" }), isLoggedIn && _jsx(Button, { variant: "outline", className: "py-2 mx-2 text-sm text-gray-700 hover:bg-gray-100 justify-center cursor-pointer", onClick: function () {
74
+ _jsxs(Button, { variant: "ghost", onClick: async () => {
75
+ if (isLoggedIn) {
76
+ await logout();
77
+ }
78
+ router.push('/auth/login?role=host');
79
+ }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "H" })] }), "Login As Business"] }), _jsx(Separator, { className: "my-1" }), isLoggedIn && _jsx(Button, { variant: "outline", className: "py-2 mx-2 text-sm text-gray-700 hover:bg-gray-100 justify-center cursor-pointer", onClick: () => {
147
80
  logout();
148
- }, children: "Sign out" })] })] }) })] }) })] }), _jsx(MobileNavbar, { children: _jsx("div", { className: "rounded-b-lg py-4 px-4 shadow-xl ".concat("bg-background", " ").concat(textColor), children: _jsxs("nav", { className: "flex flex-col gap-1 pt-2", children: [_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 py-2 px-2 text-muted-foreground", children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { className: "text-sm font-medium", children: "Opportunities" })] }), _jsx("div", { className: "pl-8 flex flex-col gap-1", children: opportunityTypeOptions.map(function (opt) { return (_jsx(Link, { href: "/opportunities?type=".concat(opt.value), className: "py-1.5 px-2 text-sm text-gray-600 hover:text-foreground hover:bg-gray-100 rounded", children: opt.label }, opt.value)); }) })] }), _jsx(MobileNavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages" }), _jsx(MobileNavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs" }), currentUser ? _jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact" }) :
149
- _jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host" }), isLoggedIn && _jsx(MobileNotificationBell, {}), isLoggedIn && _jsx(MobileNavItem, { icon: _jsx(LayoutDashboardIcon, { className: "h-5 w-5" }), label: "Dashboard", href: "/overview/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'), className: "md:hidden" }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
150
- _jsx(MobileNavItem, { icon: _jsx(Heart, { className: "h-5 w-5" }), label: "Favourites", href: "/opportunities/favourites", className: "md:hidden" }), isLoggedIn ? _jsxs(Link, { href: "/profile/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user", "/").concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"), className: "flex w-full gap-1 cursor-pointer my-2", children: [_jsxs(Avatar, { className: "w-5 h-5 ml-2", children: [_jsx(AvatarImage, { src: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) || "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "DP" })] }), _jsx(Label, { htmlFor: "username", className: "cursor-pointer text-muted-foreground hover:text-foreground", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" })] }) :
81
+ }, children: "Sign out" })] })] }) })] }) })] }), _jsx(MobileNavbar, { children: _jsx("div", { className: `rounded-b-lg py-4 px-4 shadow-xl ${"bg-background"} ${textColor}`, children: _jsxs("nav", { className: "flex flex-col gap-1 pt-2", children: [_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 py-2 px-2 text-muted-foreground", children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { className: "text-sm font-medium", children: "Opportunities" })] }), _jsx("div", { className: "pl-8 flex flex-col gap-1", children: opportunityTypeOptions.map((opt) => (_jsx(Link, { href: `/opportunities?type=${opt.value}`, className: "py-1.5 px-2 text-sm text-gray-600 hover:text-foreground hover:bg-gray-100 rounded", children: opt.label }, opt.value))) })] }), _jsx(MobileNavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages" }), _jsx(MobileNavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs" }), currentUser ? _jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact" }) :
82
+ _jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host" }), isLoggedIn && _jsx(MobileNotificationBell, {}), isLoggedIn && _jsx(MobileNavItem, { icon: _jsx(LayoutDashboardIcon, { className: "h-5 w-5" }), label: "Dashboard", href: `/overview/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'}`, className: "md:hidden" }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
83
+ _jsx(MobileNavItem, { icon: _jsx(Heart, { className: "h-5 w-5" }), label: "Favourites", href: "/opportunities/favourites", className: "md:hidden" }), isLoggedIn ? _jsxs(Link, { href: `/profile/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user"}/${(currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"}`, className: "flex w-full gap-1 cursor-pointer my-2", children: [_jsxs(Avatar, { className: "w-5 h-5 ml-2", children: [_jsx(AvatarImage, { src: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) || "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "DP" })] }), _jsx(Label, { htmlFor: "username", className: "cursor-pointer text-muted-foreground hover:text-foreground", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" })] }) :
151
84
  _jsxs(Link, { href: "/auth/login", className: "flex w-full gap-1 cursor-pointer my-2", children: [_jsxs(Avatar, { className: "w-5 h-5 ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), _jsx(Label, { htmlFor: "username", className: "cursor-pointer text-muted-foreground hover:text-foreground", children: "Login As Volunteer" })] }), (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "host" ?
152
- _jsxs(Button, { variant: "ghost", onClick: function () { return __awaiter(_this, void 0, void 0, function () {
153
- return __generator(this, function (_a) {
154
- switch (_a.label) {
155
- case 0: return [4 /*yield*/, logout()];
156
- case 1:
157
- _a.sent();
158
- router.push('/auth/login?role=user');
159
- return [2 /*return*/];
160
- }
161
- });
162
- }); }, className: "w-full text-md text-gray-500 flex gap-1 justify-start", children: [_jsxs(Avatar, { className: "w-5 h-5 -ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] })
85
+ _jsxs(Button, { variant: "ghost", onClick: async () => {
86
+ await logout();
87
+ router.push('/auth/login?role=user');
88
+ }, className: "w-full text-md text-gray-500 flex gap-1 justify-start", children: [_jsxs(Avatar, { className: "w-5 h-5 -ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] })
163
89
  :
164
- _jsxs(Button, { variant: "ghost", onClick: function () { return __awaiter(_this, void 0, void 0, function () {
165
- return __generator(this, function (_a) {
166
- switch (_a.label) {
167
- case 0:
168
- if (!isLoggedIn) return [3 /*break*/, 2];
169
- return [4 /*yield*/, logout()];
170
- case 1:
171
- _a.sent();
172
- _a.label = 2;
173
- case 2:
174
- router.push('/auth/login?role=host');
175
- return [2 /*return*/];
176
- }
177
- });
178
- }); }, className: "w-full text-md text-gray-500 flex gap-1 justify-start", children: [_jsxs(Avatar, { className: "w-5 h-5 -ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "H" })] }), "Login As Business"] }), isLoggedIn && _jsx(Button, { variant: "outline", className: "py-2 mx-2 text-sm text-gray-700 hover:bg-gray-100 justify-center cursor-pointer", onClick: function () {
90
+ _jsxs(Button, { variant: "ghost", onClick: async () => {
91
+ if (isLoggedIn) {
92
+ await logout();
93
+ }
94
+ router.push('/auth/login?role=host');
95
+ }, className: "w-full text-md text-gray-500 flex gap-1 justify-start", children: [_jsxs(Avatar, { className: "w-5 h-5 -ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "H" })] }), "Login As Business"] }), isLoggedIn && _jsx(Button, { variant: "outline", className: "py-2 mx-2 text-sm text-gray-700 hover:bg-gray-100 justify-center cursor-pointer", onClick: () => {
179
96
  logout();
180
97
  }, children: "Sign out" })] }) }) })] }) }));
181
98
  }