@almadar/ui 4.30.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 +255 -229
- package/dist/avl/index.js +255 -229
- 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/createClientEffectHandlers.d.ts +9 -1
- package/dist/runtime/index.cjs +255 -229
- package/dist/runtime/index.js +255 -229
- package/package.json +1 -1
|
@@ -17035,255 +17035,265 @@ var init_DashboardLayout = __esm({
|
|
|
17035
17035
|
} : null);
|
|
17036
17036
|
const { t } = useTranslate();
|
|
17037
17037
|
const handleSignOut = onSignOutProp || authSignOut;
|
|
17038
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17039
|
-
|
|
17040
|
-
|
|
17041
|
-
|
|
17042
|
-
|
|
17043
|
-
|
|
17044
|
-
|
|
17045
|
-
|
|
17046
|
-
|
|
17047
|
-
|
|
17048
|
-
|
|
17049
|
-
|
|
17050
|
-
className: cn(
|
|
17051
|
-
"fixed inset-y-0 left-0 z-30 w-64 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
17052
|
-
"transform transition-transform duration-200 ease-in-out lg:translate-x-0",
|
|
17053
|
-
sidebarOpen ? "translate-x-0" : "-translate-x-full"
|
|
17038
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17039
|
+
exports.HStack,
|
|
17040
|
+
{
|
|
17041
|
+
gap: "none",
|
|
17042
|
+
className: "min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
17043
|
+
children: [
|
|
17044
|
+
sidebarOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17045
|
+
exports.Box,
|
|
17046
|
+
{
|
|
17047
|
+
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 lg:hidden",
|
|
17048
|
+
onClick: () => setSidebarOpen(false)
|
|
17049
|
+
}
|
|
17054
17050
|
),
|
|
17055
|
-
|
|
17056
|
-
|
|
17057
|
-
|
|
17058
|
-
|
|
17059
|
-
|
|
17060
|
-
|
|
17061
|
-
|
|
17062
|
-
|
|
17063
|
-
|
|
17064
|
-
|
|
17065
|
-
|
|
17066
|
-
|
|
17067
|
-
|
|
17068
|
-
|
|
17069
|
-
as: "span",
|
|
17070
|
-
children: appName.charAt(0).toUpperCase()
|
|
17071
|
-
}
|
|
17072
|
-
) }),
|
|
17073
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17074
|
-
exports.Typography,
|
|
17075
|
-
{
|
|
17076
|
-
variant: "label",
|
|
17077
|
-
className: "font-semibold text-foreground dark:text-foreground",
|
|
17078
|
-
as: "span",
|
|
17079
|
-
children: appName
|
|
17080
|
-
}
|
|
17081
|
-
)
|
|
17082
|
-
] }),
|
|
17083
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17084
|
-
exports.Button,
|
|
17085
|
-
{
|
|
17086
|
-
variant: "ghost",
|
|
17087
|
-
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
17088
|
-
onClick: () => setSidebarOpen(false),
|
|
17089
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-5 w-5" })
|
|
17090
|
-
}
|
|
17091
|
-
)
|
|
17092
|
-
]
|
|
17093
|
-
}
|
|
17094
|
-
),
|
|
17095
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17096
|
-
exports.VStack,
|
|
17097
|
-
{
|
|
17098
|
-
as: "nav",
|
|
17099
|
-
gap: "none",
|
|
17100
|
-
className: "flex-1 px-3 py-4 space-y-1 overflow-y-auto",
|
|
17101
|
-
children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17102
|
-
NavLink,
|
|
17051
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17052
|
+
exports.Box,
|
|
17053
|
+
{
|
|
17054
|
+
as: "aside",
|
|
17055
|
+
className: cn(
|
|
17056
|
+
"z-30 w-64 flex-shrink-0 bg-card dark:bg-card border-r border-border dark:border-border",
|
|
17057
|
+
"fixed inset-y-0 left-0 lg:static lg:translate-x-0 lg:h-auto",
|
|
17058
|
+
"transform transition-transform duration-200 ease-in-out",
|
|
17059
|
+
"flex flex-col",
|
|
17060
|
+
sidebarOpen ? "translate-x-0" : "-translate-x-full"
|
|
17061
|
+
),
|
|
17062
|
+
children: [
|
|
17063
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17064
|
+
exports.HStack,
|
|
17103
17065
|
{
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
|
|
17111
|
-
|
|
17112
|
-
|
|
17113
|
-
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
|
|
17123
|
-
|
|
17124
|
-
|
|
17125
|
-
justify: "between",
|
|
17126
|
-
className: "h-full px-4 gap-4",
|
|
17127
|
-
children: [
|
|
17128
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17129
|
-
exports.Button,
|
|
17130
|
-
{
|
|
17131
|
-
variant: "ghost",
|
|
17132
|
-
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",
|
|
17133
|
-
onClick: () => setSidebarOpen(true),
|
|
17134
|
-
"aria-label": "Open sidebar",
|
|
17135
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Menu, { className: "h-5 w-5" })
|
|
17136
|
-
}
|
|
17137
|
-
),
|
|
17138
|
-
searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "hidden sm:block flex-1 max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "relative", children: [
|
|
17139
|
-
/* @__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" }),
|
|
17140
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17141
|
-
exports.Input,
|
|
17142
|
-
{
|
|
17143
|
-
type: "search",
|
|
17144
|
-
placeholder: t("common.search"),
|
|
17145
|
-
className: "pl-10 w-full",
|
|
17146
|
-
onKeyDown: (e) => {
|
|
17147
|
-
if (e.key === "Enter") {
|
|
17148
|
-
handleSearchSubmit(e.target.value);
|
|
17066
|
+
align: "center",
|
|
17067
|
+
justify: "between",
|
|
17068
|
+
className: "h-16 px-4 border-b border-border dark:border-border",
|
|
17069
|
+
children: [
|
|
17070
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
17071
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17072
|
+
exports.Typography,
|
|
17073
|
+
{
|
|
17074
|
+
variant: "small",
|
|
17075
|
+
className: "text-white font-bold text-sm",
|
|
17076
|
+
as: "span",
|
|
17077
|
+
children: appName.charAt(0).toUpperCase()
|
|
17078
|
+
}
|
|
17079
|
+
) }),
|
|
17080
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17081
|
+
exports.Typography,
|
|
17082
|
+
{
|
|
17083
|
+
variant: "label",
|
|
17084
|
+
className: "font-semibold text-foreground dark:text-foreground",
|
|
17085
|
+
as: "span",
|
|
17086
|
+
children: appName
|
|
17149
17087
|
}
|
|
17088
|
+
)
|
|
17089
|
+
] }),
|
|
17090
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17091
|
+
exports.Button,
|
|
17092
|
+
{
|
|
17093
|
+
variant: "ghost",
|
|
17094
|
+
className: "lg:hidden p-2 rounded-md hover:bg-muted dark:hover:bg-muted text-muted-foreground dark:text-muted-foreground",
|
|
17095
|
+
onClick: () => setSidebarOpen(false),
|
|
17096
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-5 w-5" })
|
|
17150
17097
|
}
|
|
17151
|
-
|
|
17152
|
-
|
|
17153
|
-
|
|
17154
|
-
|
|
17155
|
-
|
|
17156
|
-
|
|
17157
|
-
|
|
17158
|
-
|
|
17098
|
+
)
|
|
17099
|
+
]
|
|
17100
|
+
}
|
|
17101
|
+
),
|
|
17102
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17103
|
+
exports.VStack,
|
|
17104
|
+
{
|
|
17105
|
+
as: "nav",
|
|
17106
|
+
gap: "none",
|
|
17107
|
+
className: "flex-1 px-3 py-4 space-y-1 overflow-y-auto",
|
|
17108
|
+
children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17109
|
+
NavLink,
|
|
17159
17110
|
{
|
|
17160
|
-
|
|
17161
|
-
|
|
17162
|
-
onClick: () => handleTopBarActionClick(action.event),
|
|
17163
|
-
"aria-label": action.label ?? action.icon,
|
|
17164
|
-
children: [
|
|
17165
|
-
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: action.icon, className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
17166
|
-
action.badge !== void 0 && action.badge !== null && action.badge !== 0 && action.badge !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17167
|
-
exports.Box,
|
|
17168
|
-
{
|
|
17169
|
-
as: "span",
|
|
17170
|
-
className: cn(
|
|
17171
|
-
"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",
|
|
17172
|
-
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
17173
|
-
),
|
|
17174
|
-
children: action.badge
|
|
17175
|
-
}
|
|
17176
|
-
)
|
|
17177
|
-
]
|
|
17111
|
+
item,
|
|
17112
|
+
currentPath: location.pathname
|
|
17178
17113
|
},
|
|
17179
|
-
|
|
17180
|
-
))
|
|
17181
|
-
|
|
17182
|
-
|
|
17183
|
-
|
|
17184
|
-
|
|
17185
|
-
|
|
17186
|
-
|
|
17187
|
-
|
|
17188
|
-
|
|
17189
|
-
|
|
17190
|
-
|
|
17191
|
-
|
|
17192
|
-
|
|
17193
|
-
|
|
17194
|
-
|
|
17195
|
-
|
|
17196
|
-
|
|
17197
|
-
|
|
17198
|
-
|
|
17199
|
-
|
|
17200
|
-
|
|
17201
|
-
user && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "relative", children: [
|
|
17202
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17114
|
+
item.href
|
|
17115
|
+
))
|
|
17116
|
+
}
|
|
17117
|
+
),
|
|
17118
|
+
sidebarFooter && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "p-4 border-t border-border dark:border-border", children: sidebarFooter })
|
|
17119
|
+
]
|
|
17120
|
+
}
|
|
17121
|
+
),
|
|
17122
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "none", className: "flex-1 min-w-0 min-h-screen", children: [
|
|
17123
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17124
|
+
exports.Box,
|
|
17125
|
+
{
|
|
17126
|
+
as: "header",
|
|
17127
|
+
className: "sticky top-0 z-20 h-16 bg-card dark:bg-card border-b border-border dark:border-border",
|
|
17128
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17129
|
+
exports.HStack,
|
|
17130
|
+
{
|
|
17131
|
+
align: "center",
|
|
17132
|
+
justify: "between",
|
|
17133
|
+
className: "h-full px-3 sm:px-4 gap-2 sm:gap-4",
|
|
17134
|
+
children: [
|
|
17135
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17203
17136
|
exports.Button,
|
|
17204
17137
|
{
|
|
17205
17138
|
variant: "ghost",
|
|
17206
|
-
className: "
|
|
17207
|
-
onClick: () =>
|
|
17208
|
-
|
|
17209
|
-
|
|
17210
|
-
exports.Avatar,
|
|
17211
|
-
{
|
|
17212
|
-
src: user.avatar,
|
|
17213
|
-
alt: user.name,
|
|
17214
|
-
initials: user.name.split(" ").map((n) => n[0]).join("").substring(0, 2),
|
|
17215
|
-
size: "sm"
|
|
17216
|
-
}
|
|
17217
|
-
),
|
|
17218
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17219
|
-
exports.Typography,
|
|
17220
|
-
{
|
|
17221
|
-
variant: "small",
|
|
17222
|
-
className: "hidden sm:block text-sm font-medium text-foreground dark:text-foreground",
|
|
17223
|
-
as: "span",
|
|
17224
|
-
children: user.name
|
|
17225
|
-
}
|
|
17226
|
-
),
|
|
17227
|
-
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "hidden sm:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
17228
|
-
]
|
|
17139
|
+
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",
|
|
17140
|
+
onClick: () => setSidebarOpen(true),
|
|
17141
|
+
"aria-label": "Open sidebar",
|
|
17142
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Menu, { className: "h-5 w-5" })
|
|
17229
17143
|
}
|
|
17230
17144
|
),
|
|
17231
|
-
|
|
17145
|
+
searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "hidden sm:block flex-1 min-w-0 xl:max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "relative", children: [
|
|
17146
|
+
/* @__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" }),
|
|
17232
17147
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17233
|
-
exports.
|
|
17148
|
+
exports.Input,
|
|
17149
|
+
{
|
|
17150
|
+
type: "search",
|
|
17151
|
+
placeholder: t("common.search"),
|
|
17152
|
+
className: "pl-10 w-full",
|
|
17153
|
+
onKeyDown: (e) => {
|
|
17154
|
+
if (e.key === "Enter") {
|
|
17155
|
+
handleSearchSubmit(e.target.value);
|
|
17156
|
+
}
|
|
17157
|
+
}
|
|
17158
|
+
}
|
|
17159
|
+
)
|
|
17160
|
+
] }) }),
|
|
17161
|
+
!searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "flex-1" }),
|
|
17162
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { align: "center", gap: "xs", children: [
|
|
17163
|
+
headerActions,
|
|
17164
|
+
showThemeToggle && /* @__PURE__ */ jsxRuntime.jsx(exports.ThemeToggle, {}),
|
|
17165
|
+
topBarActions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17166
|
+
exports.Button,
|
|
17167
|
+
{
|
|
17168
|
+
variant: "ghost",
|
|
17169
|
+
className: "relative p-2 rounded-full hover:bg-muted dark:hover:bg-muted",
|
|
17170
|
+
onClick: () => handleTopBarActionClick(action.event),
|
|
17171
|
+
"aria-label": action.label ?? action.icon,
|
|
17172
|
+
children: [
|
|
17173
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: action.icon, className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
17174
|
+
action.badge !== void 0 && action.badge !== null && action.badge !== 0 && action.badge !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17175
|
+
exports.Box,
|
|
17176
|
+
{
|
|
17177
|
+
as: "span",
|
|
17178
|
+
className: cn(
|
|
17179
|
+
"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",
|
|
17180
|
+
action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
|
|
17181
|
+
),
|
|
17182
|
+
children: action.badge
|
|
17183
|
+
}
|
|
17184
|
+
)
|
|
17185
|
+
]
|
|
17186
|
+
},
|
|
17187
|
+
`${action.event}-${idx}`
|
|
17188
|
+
)),
|
|
17189
|
+
notificationsEnabled && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17190
|
+
exports.Button,
|
|
17234
17191
|
{
|
|
17235
|
-
|
|
17236
|
-
|
|
17192
|
+
variant: "ghost",
|
|
17193
|
+
className: "relative p-2 rounded-full hover:bg-muted dark:hover:bg-muted",
|
|
17194
|
+
onClick: handleNotificationClick,
|
|
17195
|
+
"aria-label": t("common.notifications"),
|
|
17196
|
+
children: [
|
|
17197
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Bell, { className: "h-5 w-5 text-muted-foreground dark:text-muted-foreground" }),
|
|
17198
|
+
unreadCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17199
|
+
exports.Box,
|
|
17200
|
+
{
|
|
17201
|
+
as: "span",
|
|
17202
|
+
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",
|
|
17203
|
+
children: unreadCount > 99 ? "99+" : unreadCount
|
|
17204
|
+
}
|
|
17205
|
+
)
|
|
17206
|
+
]
|
|
17237
17207
|
}
|
|
17238
17208
|
),
|
|
17239
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "
|
|
17240
|
-
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "px-4 py-2 border-b border-border dark:border-border", children: [
|
|
17241
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17242
|
-
exports.Typography,
|
|
17243
|
-
{
|
|
17244
|
-
variant: "small",
|
|
17245
|
-
className: "text-sm font-medium text-foreground dark:text-foreground",
|
|
17246
|
-
as: "p",
|
|
17247
|
-
children: user.name
|
|
17248
|
-
}
|
|
17249
|
-
),
|
|
17250
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17251
|
-
exports.Typography,
|
|
17252
|
-
{
|
|
17253
|
-
variant: "caption",
|
|
17254
|
-
className: "text-xs text-muted-foreground dark:text-muted-foreground",
|
|
17255
|
-
as: "p",
|
|
17256
|
-
children: user.email
|
|
17257
|
-
}
|
|
17258
|
-
)
|
|
17259
|
-
] }),
|
|
17209
|
+
user && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "relative", children: [
|
|
17260
17210
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17261
17211
|
exports.Button,
|
|
17262
17212
|
{
|
|
17263
17213
|
variant: "ghost",
|
|
17264
|
-
|
|
17265
|
-
|
|
17266
|
-
handleSignOut?.();
|
|
17267
|
-
},
|
|
17268
|
-
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",
|
|
17214
|
+
className: "flex items-center gap-2 p-2 rounded-lg hover:bg-muted dark:hover:bg-muted",
|
|
17215
|
+
onClick: () => setUserMenuOpen(!userMenuOpen),
|
|
17269
17216
|
children: [
|
|
17270
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17271
|
-
|
|
17217
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17218
|
+
exports.Avatar,
|
|
17219
|
+
{
|
|
17220
|
+
src: user.avatar,
|
|
17221
|
+
alt: user.name,
|
|
17222
|
+
initials: user.name.split(" ").map((n) => n[0]).join("").substring(0, 2),
|
|
17223
|
+
size: "sm"
|
|
17224
|
+
}
|
|
17225
|
+
),
|
|
17226
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17227
|
+
exports.Typography,
|
|
17228
|
+
{
|
|
17229
|
+
variant: "small",
|
|
17230
|
+
className: "hidden sm:block text-sm font-medium text-foreground dark:text-foreground",
|
|
17231
|
+
as: "span",
|
|
17232
|
+
children: user.name
|
|
17233
|
+
}
|
|
17234
|
+
),
|
|
17235
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "hidden sm:block h-4 w-4 text-muted-foreground dark:text-muted-foreground" })
|
|
17272
17236
|
]
|
|
17273
17237
|
}
|
|
17274
|
-
)
|
|
17238
|
+
),
|
|
17239
|
+
userMenuOpen && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17240
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17241
|
+
exports.Box,
|
|
17242
|
+
{
|
|
17243
|
+
className: "fixed inset-0 z-20",
|
|
17244
|
+
onClick: () => setUserMenuOpen(false)
|
|
17245
|
+
}
|
|
17246
|
+
),
|
|
17247
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.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: [
|
|
17248
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "px-4 py-2 border-b border-border dark:border-border", children: [
|
|
17249
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17250
|
+
exports.Typography,
|
|
17251
|
+
{
|
|
17252
|
+
variant: "small",
|
|
17253
|
+
className: "text-sm font-medium text-foreground dark:text-foreground",
|
|
17254
|
+
as: "p",
|
|
17255
|
+
children: user.name
|
|
17256
|
+
}
|
|
17257
|
+
),
|
|
17258
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17259
|
+
exports.Typography,
|
|
17260
|
+
{
|
|
17261
|
+
variant: "caption",
|
|
17262
|
+
className: "text-xs text-muted-foreground dark:text-muted-foreground",
|
|
17263
|
+
as: "p",
|
|
17264
|
+
children: user.email
|
|
17265
|
+
}
|
|
17266
|
+
)
|
|
17267
|
+
] }),
|
|
17268
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
17269
|
+
exports.Button,
|
|
17270
|
+
{
|
|
17271
|
+
variant: "ghost",
|
|
17272
|
+
onClick: () => {
|
|
17273
|
+
setUserMenuOpen(false);
|
|
17274
|
+
handleSignOut?.();
|
|
17275
|
+
},
|
|
17276
|
+
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",
|
|
17277
|
+
children: [
|
|
17278
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.LogOut, { className: "h-4 w-4" }),
|
|
17279
|
+
t("auth.signOut")
|
|
17280
|
+
]
|
|
17281
|
+
}
|
|
17282
|
+
)
|
|
17283
|
+
] })
|
|
17284
|
+
] })
|
|
17275
17285
|
] })
|
|
17276
17286
|
] })
|
|
17277
|
-
]
|
|
17278
|
-
|
|
17279
|
-
|
|
17287
|
+
]
|
|
17288
|
+
}
|
|
17289
|
+
)
|
|
17280
17290
|
}
|
|
17281
|
-
)
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
|
|
17285
|
-
|
|
17286
|
-
|
|
17291
|
+
),
|
|
17292
|
+
/* @__PURE__ */ jsxRuntime.jsx(exports.Box, { as: "main", className: "flex-1 p-3 sm:p-4 md:p-6", children })
|
|
17293
|
+
] })
|
|
17294
|
+
]
|
|
17295
|
+
}
|
|
17296
|
+
);
|
|
17287
17297
|
};
|
|
17288
17298
|
exports.DashboardLayout.displayName = "DashboardLayout";
|
|
17289
17299
|
NavLink = ({
|