@almadar/ui 4.31.0 → 4.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +234 -224
- package/dist/avl/index.js +234 -224
- package/dist/components/index.cjs +234 -224
- package/dist/components/index.js +234 -224
- package/dist/providers/index.cjs +234 -224
- package/dist/providers/index.js +234 -224
- package/dist/runtime/index.cjs +234 -224
- package/dist/runtime/index.js +234 -224
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -20668,255 +20668,265 @@ var init_DashboardLayout = __esm({
|
|
|
20668
20668
|
const user = userProp || (null);
|
|
20669
20669
|
const { t } = useTranslate();
|
|
20670
20670
|
const handleSignOut = onSignOutProp || authSignOut;
|
|
20671
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20672
|
-
|
|
20673
|
-
|
|
20674
|
-
|
|
20675
|
-
|
|
20676
|
-
|
|
20677
|
-
|
|
20678
|
-
|
|
20679
|
-
|
|
20680
|
-
|
|
20681
|
-
|
|
20682
|
-
|
|
20683
|
-
className: cn(
|
|
20684
|
-
"fixed inset-y-0 left-0 z-30 w-64 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
20685
|
-
"transform transition-transform duration-200 ease-in-out lg:translate-x-0",
|
|
20686
|
-
sidebarOpen ? "translate-x-0" : "-translate-x-full"
|
|
20671
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20672
|
+
HStack,
|
|
20673
|
+
{
|
|
20674
|
+
gap: "none",
|
|
20675
|
+
className: "min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
20676
|
+
children: [
|
|
20677
|
+
sidebarOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20678
|
+
Box,
|
|
20679
|
+
{
|
|
20680
|
+
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 lg:hidden",
|
|
20681
|
+
onClick: () => setSidebarOpen(false)
|
|
20682
|
+
}
|
|
20687
20683
|
),
|
|
20688
|
-
|
|
20689
|
-
|
|
20690
|
-
|
|
20691
|
-
|
|
20692
|
-
|
|
20693
|
-
|
|
20694
|
-
|
|
20695
|
-
|
|
20696
|
-
|
|
20697
|
-
|
|
20698
|
-
|
|
20699
|
-
|
|
20700
|
-
|
|
20701
|
-
|
|
20702
|
-
as: "span",
|
|
20703
|
-
children: appName.charAt(0).toUpperCase()
|
|
20704
|
-
}
|
|
20705
|
-
) }),
|
|
20706
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20707
|
-
Typography,
|
|
20708
|
-
{
|
|
20709
|
-
variant: "label",
|
|
20710
|
-
className: "font-semibold text-foreground dark:text-foreground",
|
|
20711
|
-
as: "span",
|
|
20712
|
-
children: appName
|
|
20713
|
-
}
|
|
20714
|
-
)
|
|
20715
|
-
] }),
|
|
20716
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20717
|
-
Button,
|
|
20718
|
-
{
|
|
20719
|
-
variant: "ghost",
|
|
20720
|
-
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
20721
|
-
onClick: () => setSidebarOpen(false),
|
|
20722
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-5 w-5" })
|
|
20723
|
-
}
|
|
20724
|
-
)
|
|
20725
|
-
]
|
|
20726
|
-
}
|
|
20727
|
-
),
|
|
20728
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20729
|
-
VStack,
|
|
20730
|
-
{
|
|
20731
|
-
as: "nav",
|
|
20732
|
-
gap: "none",
|
|
20733
|
-
className: "flex-1 px-3 py-4 space-y-1 overflow-y-auto",
|
|
20734
|
-
children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20735
|
-
NavLink,
|
|
20684
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20685
|
+
Box,
|
|
20686
|
+
{
|
|
20687
|
+
as: "aside",
|
|
20688
|
+
className: cn(
|
|
20689
|
+
"z-30 w-64 flex-shrink-0 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
20690
|
+
"fixed inset-y-0 left-0 lg:static lg:translate-x-0 lg:h-auto",
|
|
20691
|
+
"transform transition-transform duration-200 ease-in-out",
|
|
20692
|
+
"flex flex-col",
|
|
20693
|
+
sidebarOpen ? "translate-x-0" : "-translate-x-full"
|
|
20694
|
+
),
|
|
20695
|
+
children: [
|
|
20696
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20697
|
+
HStack,
|
|
20736
20698
|
{
|
|
20737
|
-
|
|
20738
|
-
|
|
20739
|
-
|
|
20740
|
-
|
|
20741
|
-
|
|
20742
|
-
|
|
20743
|
-
|
|
20744
|
-
|
|
20745
|
-
|
|
20746
|
-
|
|
20747
|
-
|
|
20748
|
-
|
|
20749
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20750
|
-
Box,
|
|
20751
|
-
{
|
|
20752
|
-
as: "header",
|
|
20753
|
-
className: "sticky top-0 z-20 h-16 bg-card dark:bg-card border-b border-border dark:border-border",
|
|
20754
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20755
|
-
HStack,
|
|
20756
|
-
{
|
|
20757
|
-
align: "center",
|
|
20758
|
-
justify: "between",
|
|
20759
|
-
className: "h-full px-4 gap-4",
|
|
20760
|
-
children: [
|
|
20761
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20762
|
-
Button,
|
|
20763
|
-
{
|
|
20764
|
-
variant: "ghost",
|
|
20765
|
-
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center",
|
|
20766
|
-
onClick: () => setSidebarOpen(true),
|
|
20767
|
-
"aria-label": "Open sidebar",
|
|
20768
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Menu, { className: "h-5 w-5" })
|
|
20769
|
-
}
|
|
20770
|
-
),
|
|
20771
|
-
searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "hidden sm:block flex-1 max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "relative", children: [
|
|
20772
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
20773
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20774
|
-
Input,
|
|
20775
|
-
{
|
|
20776
|
-
type: "search",
|
|
20777
|
-
placeholder: t("common.search"),
|
|
20778
|
-
className: "pl-10 w-full",
|
|
20779
|
-
onKeyDown: (e) => {
|
|
20780
|
-
if (e.key === "Enter") {
|
|
20781
|
-
handleSearchSubmit(e.target.value);
|
|
20699
|
+
align: "center",
|
|
20700
|
+
justify: "between",
|
|
20701
|
+
className: "h-16 px-4 border-b border-border dark:border-border",
|
|
20702
|
+
children: [
|
|
20703
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
20704
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20705
|
+
Typography,
|
|
20706
|
+
{
|
|
20707
|
+
variant: "small",
|
|
20708
|
+
className: "text-white font-bold text-sm",
|
|
20709
|
+
as: "span",
|
|
20710
|
+
children: appName.charAt(0).toUpperCase()
|
|
20782
20711
|
}
|
|
20712
|
+
) }),
|
|
20713
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20714
|
+
Typography,
|
|
20715
|
+
{
|
|
20716
|
+
variant: "label",
|
|
20717
|
+
className: "font-semibold text-foreground dark:text-foreground",
|
|
20718
|
+
as: "span",
|
|
20719
|
+
children: appName
|
|
20720
|
+
}
|
|
20721
|
+
)
|
|
20722
|
+
] }),
|
|
20723
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20724
|
+
Button,
|
|
20725
|
+
{
|
|
20726
|
+
variant: "ghost",
|
|
20727
|
+
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
20728
|
+
onClick: () => setSidebarOpen(false),
|
|
20729
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-5 w-5" })
|
|
20783
20730
|
}
|
|
20784
|
-
|
|
20785
|
-
|
|
20786
|
-
|
|
20787
|
-
|
|
20788
|
-
|
|
20789
|
-
|
|
20790
|
-
|
|
20791
|
-
|
|
20731
|
+
)
|
|
20732
|
+
]
|
|
20733
|
+
}
|
|
20734
|
+
),
|
|
20735
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20736
|
+
VStack,
|
|
20737
|
+
{
|
|
20738
|
+
as: "nav",
|
|
20739
|
+
gap: "none",
|
|
20740
|
+
className: "flex-1 px-3 py-4 space-y-1 overflow-y-auto",
|
|
20741
|
+
children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20742
|
+
NavLink,
|
|
20792
20743
|
{
|
|
20793
|
-
|
|
20794
|
-
|
|
20795
|
-
onClick: () => handleTopBarActionClick(action.event),
|
|
20796
|
-
"aria-label": action.label ?? action.icon,
|
|
20797
|
-
children: [
|
|
20798
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: action.icon, className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
20799
|
-
action.badge !== void 0 && action.badge !== null && action.badge !== 0 && action.badge !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20800
|
-
Box,
|
|
20801
|
-
{
|
|
20802
|
-
as: "span",
|
|
20803
|
-
className: cn(
|
|
20804
|
-
"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-[10px] font-semibold text-white flex items-center justify-center",
|
|
20805
|
-
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
20806
|
-
),
|
|
20807
|
-
children: action.badge
|
|
20808
|
-
}
|
|
20809
|
-
)
|
|
20810
|
-
]
|
|
20744
|
+
item,
|
|
20745
|
+
currentPath: location.pathname
|
|
20811
20746
|
},
|
|
20812
|
-
|
|
20813
|
-
))
|
|
20814
|
-
|
|
20815
|
-
|
|
20816
|
-
|
|
20817
|
-
|
|
20818
|
-
|
|
20819
|
-
|
|
20820
|
-
|
|
20821
|
-
|
|
20822
|
-
|
|
20823
|
-
|
|
20824
|
-
|
|
20825
|
-
|
|
20826
|
-
|
|
20827
|
-
|
|
20828
|
-
|
|
20829
|
-
|
|
20830
|
-
|
|
20831
|
-
|
|
20832
|
-
|
|
20833
|
-
|
|
20834
|
-
user && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "relative", children: [
|
|
20835
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20747
|
+
item.href
|
|
20748
|
+
))
|
|
20749
|
+
}
|
|
20750
|
+
),
|
|
20751
|
+
sidebarFooter && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "p-4 border-t border-border dark:border-border", children: sidebarFooter })
|
|
20752
|
+
]
|
|
20753
|
+
}
|
|
20754
|
+
),
|
|
20755
|
+
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", className: "flex-1 min-w-0 min-h-screen", children: [
|
|
20756
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20757
|
+
Box,
|
|
20758
|
+
{
|
|
20759
|
+
as: "header",
|
|
20760
|
+
className: "sticky top-0 z-20 h-16 bg-card dark:bg-card border-b border-border dark:border-border",
|
|
20761
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20762
|
+
HStack,
|
|
20763
|
+
{
|
|
20764
|
+
align: "center",
|
|
20765
|
+
justify: "between",
|
|
20766
|
+
className: "h-full px-3 sm:px-4 gap-2 sm:gap-4",
|
|
20767
|
+
children: [
|
|
20768
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20836
20769
|
Button,
|
|
20837
20770
|
{
|
|
20838
20771
|
variant: "ghost",
|
|
20839
|
-
className: "
|
|
20840
|
-
onClick: () =>
|
|
20841
|
-
|
|
20842
|
-
|
|
20843
|
-
Avatar,
|
|
20844
|
-
{
|
|
20845
|
-
src: user.avatar,
|
|
20846
|
-
alt: user.name,
|
|
20847
|
-
initials: user.name.split(" ").map((n) => n[0]).join("").substring(0, 2),
|
|
20848
|
-
size: "sm"
|
|
20849
|
-
}
|
|
20850
|
-
),
|
|
20851
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20852
|
-
Typography,
|
|
20853
|
-
{
|
|
20854
|
-
variant: "small",
|
|
20855
|
-
className: "hidden sm:block text-sm font-medium text-foreground dark:text-foreground",
|
|
20856
|
-
as: "span",
|
|
20857
|
-
children: user.name
|
|
20858
|
-
}
|
|
20859
|
-
),
|
|
20860
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "hidden sm:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
20861
|
-
]
|
|
20772
|
+
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center",
|
|
20773
|
+
onClick: () => setSidebarOpen(true),
|
|
20774
|
+
"aria-label": "Open sidebar",
|
|
20775
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Menu, { className: "h-5 w-5" })
|
|
20862
20776
|
}
|
|
20863
20777
|
),
|
|
20864
|
-
|
|
20778
|
+
searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "hidden sm:block flex-1 min-w-0 xl:max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "relative", children: [
|
|
20779
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
20865
20780
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20866
|
-
|
|
20781
|
+
Input,
|
|
20782
|
+
{
|
|
20783
|
+
type: "search",
|
|
20784
|
+
placeholder: t("common.search"),
|
|
20785
|
+
className: "pl-10 w-full",
|
|
20786
|
+
onKeyDown: (e) => {
|
|
20787
|
+
if (e.key === "Enter") {
|
|
20788
|
+
handleSearchSubmit(e.target.value);
|
|
20789
|
+
}
|
|
20790
|
+
}
|
|
20791
|
+
}
|
|
20792
|
+
)
|
|
20793
|
+
] }) }),
|
|
20794
|
+
!searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex-1" }),
|
|
20795
|
+
/* @__PURE__ */ jsxRuntime.jsxs(HStack, { align: "center", gap: "xs", children: [
|
|
20796
|
+
headerActions,
|
|
20797
|
+
showThemeToggle && /* @__PURE__ */ jsxRuntime.jsx(ThemeToggle, {}),
|
|
20798
|
+
topBarActions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20799
|
+
Button,
|
|
20800
|
+
{
|
|
20801
|
+
variant: "ghost",
|
|
20802
|
+
className: "relative p-2 rounded-full hover:bg-muted dark:hover:bg-muted",
|
|
20803
|
+
onClick: () => handleTopBarActionClick(action.event),
|
|
20804
|
+
"aria-label": action.label ?? action.icon,
|
|
20805
|
+
children: [
|
|
20806
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { name: action.icon, className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
20807
|
+
action.badge !== void 0 && action.badge !== null && action.badge !== 0 && action.badge !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20808
|
+
Box,
|
|
20809
|
+
{
|
|
20810
|
+
as: "span",
|
|
20811
|
+
className: cn(
|
|
20812
|
+
"absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-[10px] font-semibold text-white flex items-center justify-center",
|
|
20813
|
+
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
20814
|
+
),
|
|
20815
|
+
children: action.badge
|
|
20816
|
+
}
|
|
20817
|
+
)
|
|
20818
|
+
]
|
|
20819
|
+
},
|
|
20820
|
+
`${action.event}-${idx}`
|
|
20821
|
+
)),
|
|
20822
|
+
notificationsEnabled && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20823
|
+
Button,
|
|
20867
20824
|
{
|
|
20868
|
-
|
|
20869
|
-
|
|
20825
|
+
variant: "ghost",
|
|
20826
|
+
className: "relative p-2 rounded-full hover:bg-muted dark:hover:bg-muted",
|
|
20827
|
+
onClick: handleNotificationClick,
|
|
20828
|
+
"aria-label": t("common.notifications"),
|
|
20829
|
+
children: [
|
|
20830
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Bell, { className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
20831
|
+
unreadCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20832
|
+
Box,
|
|
20833
|
+
{
|
|
20834
|
+
as: "span",
|
|
20835
|
+
className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-[10px] font-semibold text-white flex items-center justify-center",
|
|
20836
|
+
children: unreadCount > 99 ? "99+" : unreadCount
|
|
20837
|
+
}
|
|
20838
|
+
)
|
|
20839
|
+
]
|
|
20870
20840
|
}
|
|
20871
20841
|
),
|
|
20872
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "
|
|
20873
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-2 border-b border-border dark:border-border", children: [
|
|
20874
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20875
|
-
Typography,
|
|
20876
|
-
{
|
|
20877
|
-
variant: "small",
|
|
20878
|
-
className: "text-sm font-medium text-foreground dark:text-foreground",
|
|
20879
|
-
as: "p",
|
|
20880
|
-
children: user.name
|
|
20881
|
-
}
|
|
20882
|
-
),
|
|
20883
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20884
|
-
Typography,
|
|
20885
|
-
{
|
|
20886
|
-
variant: "caption",
|
|
20887
|
-
className: "text-xs text-muted-foreground dark:text-muted-foreground",
|
|
20888
|
-
as: "p",
|
|
20889
|
-
children: user.email
|
|
20890
|
-
}
|
|
20891
|
-
)
|
|
20892
|
-
] }),
|
|
20842
|
+
user && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "relative", children: [
|
|
20893
20843
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20894
20844
|
Button,
|
|
20895
20845
|
{
|
|
20896
20846
|
variant: "ghost",
|
|
20897
|
-
|
|
20898
|
-
|
|
20899
|
-
handleSignOut?.();
|
|
20900
|
-
},
|
|
20901
|
-
className: "w-full flex items-center gap-2 px-4 py-2 text-sm text-error dark:text-error hover:bg-error/10 dark:hover:bg-error/20",
|
|
20847
|
+
className: "flex items-center gap-2 p-2 rounded-lg hover:bg-muted dark:hover:bg-muted",
|
|
20848
|
+
onClick: () => setUserMenuOpen(!userMenuOpen),
|
|
20902
20849
|
children: [
|
|
20903
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20904
|
-
|
|
20850
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20851
|
+
Avatar,
|
|
20852
|
+
{
|
|
20853
|
+
src: user.avatar,
|
|
20854
|
+
alt: user.name,
|
|
20855
|
+
initials: user.name.split(" ").map((n) => n[0]).join("").substring(0, 2),
|
|
20856
|
+
size: "sm"
|
|
20857
|
+
}
|
|
20858
|
+
),
|
|
20859
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20860
|
+
Typography,
|
|
20861
|
+
{
|
|
20862
|
+
variant: "small",
|
|
20863
|
+
className: "hidden sm:block text-sm font-medium text-foreground dark:text-foreground",
|
|
20864
|
+
as: "span",
|
|
20865
|
+
children: user.name
|
|
20866
|
+
}
|
|
20867
|
+
),
|
|
20868
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "hidden sm:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
20905
20869
|
]
|
|
20906
20870
|
}
|
|
20907
|
-
)
|
|
20871
|
+
),
|
|
20872
|
+
userMenuOpen && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20873
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20874
|
+
Box,
|
|
20875
|
+
{
|
|
20876
|
+
className: "fixed inset-0 z-20",
|
|
20877
|
+
onClick: () => setUserMenuOpen(false)
|
|
20878
|
+
}
|
|
20879
|
+
),
|
|
20880
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "absolute right-0 mt-2 w-48 bg-card dark:bg-card rounded-lg shadow-lg border border-border dark:border-border py-1 z-30", children: [
|
|
20881
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "px-4 py-2 border-b border-border dark:border-border", children: [
|
|
20882
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20883
|
+
Typography,
|
|
20884
|
+
{
|
|
20885
|
+
variant: "small",
|
|
20886
|
+
className: "text-sm font-medium text-foreground dark:text-foreground",
|
|
20887
|
+
as: "p",
|
|
20888
|
+
children: user.name
|
|
20889
|
+
}
|
|
20890
|
+
),
|
|
20891
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20892
|
+
Typography,
|
|
20893
|
+
{
|
|
20894
|
+
variant: "caption",
|
|
20895
|
+
className: "text-xs text-muted-foreground dark:text-muted-foreground",
|
|
20896
|
+
as: "p",
|
|
20897
|
+
children: user.email
|
|
20898
|
+
}
|
|
20899
|
+
)
|
|
20900
|
+
] }),
|
|
20901
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20902
|
+
Button,
|
|
20903
|
+
{
|
|
20904
|
+
variant: "ghost",
|
|
20905
|
+
onClick: () => {
|
|
20906
|
+
setUserMenuOpen(false);
|
|
20907
|
+
handleSignOut?.();
|
|
20908
|
+
},
|
|
20909
|
+
className: "w-full flex items-center gap-2 px-4 py-2 text-sm text-error dark:text-error hover:bg-error/10 dark:hover:bg-error/20",
|
|
20910
|
+
children: [
|
|
20911
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.LogOut, { className: "h-4 w-4" }),
|
|
20912
|
+
t("auth.signOut")
|
|
20913
|
+
]
|
|
20914
|
+
}
|
|
20915
|
+
)
|
|
20916
|
+
] })
|
|
20917
|
+
] })
|
|
20908
20918
|
] })
|
|
20909
20919
|
] })
|
|
20910
|
-
]
|
|
20911
|
-
|
|
20912
|
-
|
|
20920
|
+
]
|
|
20921
|
+
}
|
|
20922
|
+
)
|
|
20913
20923
|
}
|
|
20914
|
-
)
|
|
20915
|
-
|
|
20916
|
-
|
|
20917
|
-
|
|
20918
|
-
|
|
20919
|
-
|
|
20924
|
+
),
|
|
20925
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { as: "main", className: "flex-1 p-3 sm:p-4 md:p-6", children })
|
|
20926
|
+
] })
|
|
20927
|
+
]
|
|
20928
|
+
}
|
|
20929
|
+
);
|
|
20920
20930
|
};
|
|
20921
20931
|
DashboardLayout.displayName = "DashboardLayout";
|
|
20922
20932
|
NavLink = ({
|