@deenruv/admin-dashboard 1.0.16 → 1.0.17-dev.4
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/DeenruvAdminPanel.js +4 -4
- package/dist/components/GlobalSearch.js +5 -5
- package/dist/components/Menu/ActiveAdmins.js +1 -1
- package/dist/components/Menu/ChannelSwitcher.js +1 -1
- package/dist/components/Menu/LanguagesDropdown.js +1 -1
- package/dist/components/Menu/Navigation.js +4 -4
- package/dist/components/Menu/NavigationFooter.js +2 -2
- package/dist/components/Menu/Notifications.js +1 -1
- package/dist/components/Menu/index.js +12 -14
- package/dist/index.css +54 -44
- package/dist/locales/en/collections.json +7 -0
- package/dist/locales/en/common.json +1 -0
- package/dist/locales/en/orders.json +8 -0
- package/dist/locales/en/products.json +14 -2
- package/dist/locales/en/promotions.json +4 -0
- package/dist/locales/pl/collections.json +7 -0
- package/dist/locales/pl/common.json +1 -0
- package/dist/locales/pl/orders.json +8 -0
- package/dist/locales/pl/products.json +14 -2
- package/dist/locales/pl/promotions.json +4 -0
- package/dist/pages/Root.js +1 -1
- package/dist/pages/collections/Detail.js +20 -5
- package/dist/pages/collections/_components/CollectionDetailView.js +15 -2
- package/dist/pages/collections/_components/FiltersCard.js +51 -11
- package/dist/pages/customers/_components/PersonalDataCard.js +2 -1
- package/dist/pages/extensions/Extensions.js +3 -7
- package/dist/pages/orders/Detail.js +38 -5
- package/dist/pages/orders/List.js +1 -16
- package/dist/pages/orders/_components/CancelAndRefundDialog.js +1 -2
- package/dist/pages/orders/_components/OrderLineCustomFields.js +1 -1
- package/dist/pages/orders/_components/ProductsTable.js +1 -2
- package/dist/pages/orders/_components/RefundPaymentCard.js +1 -2
- package/dist/pages/products/Detail.js +58 -4
- package/dist/pages/products/_components/AssetsCard.js +15 -2
- package/dist/pages/products/_components/OptionsCard.js +7 -5
- package/dist/pages/products/_components/PriceCard.js +21 -8
- package/dist/pages/products/_components/ProductDetailView.js +7 -3
- package/dist/pages/products/_components/Variant.js +40 -19
- package/dist/pages/products/_components/VariantsTab.js +1 -1
- package/dist/pages/promotions/Detail.js +34 -3
- package/dist/pages/promotions/_components/EnabledCard.js +2 -2
- package/dist/pages/promotions/_components/PromotionDetailSidebar.js +2 -1
- package/dist/pages/roles/_components/PermissionsTable.js +0 -1
- package/dist/pages/shipping-methods/Detail.js +9 -5
- package/dist/pages/shipping-methods/_components/CalculatorCard.js +27 -11
- package/dist/pages/shipping-methods/_components/CheckerCard.js +28 -12
- package/dist/version.js +1 -1
- package/package.json +68 -68
|
@@ -103,12 +103,12 @@ export const DeenruvAdminPanel = ({ plugins, settings }) => {
|
|
|
103
103
|
}, [theme]);
|
|
104
104
|
return (_jsx(GlobalStoreProvider, { ...settings, children: _jsxs(I18nextProvider, { i18n: i18n, defaultNS: 'common', children: [_jsx(AnimatePresence, { children: isLoggedIn ? (_jsx(PluginProvider, { plugins: pluginsStore, context: context, children: _jsx(NotificationProvider, { notifications: [ORDER_STATUS_NOTIFICATION, SYSTEM_STATUS_NOTIFICATION].concat(pluginsStore.notifications), children: _jsx(RouterProvider, { router: router }) }) })) : (_jsx(LoginScreen, {})) }), _jsx(Toaster, { theme: theme, className: "toaster group", richColors: true, expand: true, position: "bottom-right", toastOptions: {
|
|
105
105
|
classNames: {
|
|
106
|
-
toast: 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg group-[.toaster]:
|
|
106
|
+
toast: 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg group-[.toaster]:p-4',
|
|
107
107
|
title: 'group-[.toast]:font-semibold group-[.toast]:text-foreground',
|
|
108
108
|
description: 'group-[.toast]:text-muted-foreground group-[.toast]:text-sm',
|
|
109
|
-
actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground group-[.toast]:
|
|
110
|
-
cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground group-[.toast]:
|
|
111
|
-
closeButton: 'group-[.toast]:text-foreground/50 group-[.toast]:hover:text-foreground
|
|
109
|
+
actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground group-[.toast]:px-3 group-[.toast]:text-xs group-[.toast]:h-8 group-[.toast]:font-medium',
|
|
110
|
+
cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground group-[.toast]:px-3 group-[.toast]:text-xs group-[.toast]:h-8 group-[.toast]:font-medium',
|
|
111
|
+
closeButton: 'group-[.toast]:text-foreground/50 group-[.toast]:hover:text-foreground',
|
|
112
112
|
success: 'group-[.toast]:border-l-4 group-[.toast]:border-l-green-500',
|
|
113
113
|
error: 'group-[.toast]:border-l-4 group-[.toast]:border-l-red-500',
|
|
114
114
|
warning: 'group-[.toast]:border-l-4 group-[.toast]:border-l-yellow-500',
|
|
@@ -110,25 +110,25 @@ export const GlobalSearch = () => {
|
|
|
110
110
|
return _jsx(LayoutDashboard, { className: "mr-2 h-4 w-4 text-gray-500" });
|
|
111
111
|
}
|
|
112
112
|
};
|
|
113
|
-
return (_jsxs(CommandDialog, { open: isOpen, onOpenChange: toggle, modal: true, children: [_jsx(CommandInput, { placeholder: t('globalSearch.placeholder'), className: "flex-1 bg-transparent text-
|
|
113
|
+
return (_jsxs(CommandDialog, { open: isOpen, onOpenChange: toggle, modal: true, children: [_jsx(CommandInput, { placeholder: t('globalSearch.placeholder'), className: "flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground" }), _jsxs(CommandList, { className: "max-h-[320px] overflow-y-auto py-2", children: [_jsx(CommandEmpty, { className: "py-6 text-center text-sm", children: t('globalSearch.emptyState') }), groupedRoutes.core.length > 0 && (_jsx(CommandGroup, { heading: t('globalSearch.navigation'), className: "px-2", children: groupedRoutes.core.map((route) => (_jsxs(CommandItem, { onSelect: () => {
|
|
114
114
|
if (route.path) {
|
|
115
115
|
navigate(route.path);
|
|
116
116
|
}
|
|
117
117
|
close();
|
|
118
|
-
}, className: "group flex cursor-pointer items-center
|
|
118
|
+
}, className: "group flex cursor-pointer items-center px-3 py-2.5 transition-colors hover:bg-accent", children: [getRouteIcon(route.type), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "font-medium", children: route.name }), route.description && _jsx("span", { className: "text-xs text-muted-foreground", children: route.description })] }), _jsx(ArrowRight, { className: "ml-auto h-4 w-4 opacity-0 transition-opacity group-hover:opacity-70" })] }, route.id || `core-${route.name}-${route.path}`))) })), groupedRoutes.newItems.length > 0 && (_jsx(CommandGroup, { heading: t('globalSearch.createNew'), className: "px-2", children: groupedRoutes.newItems.map((route) => (_jsxs(CommandItem, { onSelect: () => {
|
|
119
119
|
if (route.path) {
|
|
120
120
|
navigate(route.path);
|
|
121
121
|
}
|
|
122
122
|
close();
|
|
123
|
-
}, className: "group flex cursor-pointer items-center
|
|
123
|
+
}, className: "group flex cursor-pointer items-center px-3 py-2.5 transition-colors hover:bg-accent", children: [getRouteIcon(route.type), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "font-medium", children: route.name }), route.description && _jsx("span", { className: "text-xs text-muted-foreground", children: route.description })] }), _jsx(ArrowRight, { className: "ml-auto h-4 w-4 opacity-0 transition-opacity group-hover:opacity-70" })] }, route.id || `new-${route.name}-${route.path}`))) })), groupedRoutes.lists.length > 0 && (_jsx(CommandGroup, { heading: t('globalSearch.viewLists'), className: "px-2", children: groupedRoutes.lists.map((route) => (_jsxs(CommandItem, { onSelect: () => {
|
|
124
124
|
if (route.path) {
|
|
125
125
|
navigate(route.path);
|
|
126
126
|
}
|
|
127
127
|
close();
|
|
128
|
-
}, className: "group flex cursor-pointer items-center
|
|
128
|
+
}, className: "group flex cursor-pointer items-center px-3 py-2.5 transition-colors hover:bg-accent", children: [getRouteIcon(route.type), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "font-medium", children: route.name }), route.description && _jsx("span", { className: "text-xs text-muted-foreground", children: route.description })] }), _jsx(ArrowRight, { className: "ml-auto h-4 w-4 opacity-0 transition-opacity group-hover:opacity-70" })] }, route.id || `list-${route.name}-${route.path}`))) })), groupedRoutes.pluginRoutes.length > 0 && (_jsx(CommandGroup, { heading: t('globalSearch.plugins'), className: "px-2", children: groupedRoutes.pluginRoutes.map((route) => (_jsxs(CommandItem, { onSelect: () => {
|
|
129
129
|
if (route.path) {
|
|
130
130
|
navigate(route.path);
|
|
131
131
|
}
|
|
132
132
|
close();
|
|
133
|
-
}, className: "group flex cursor-pointer items-center
|
|
133
|
+
}, className: "group flex cursor-pointer items-center px-3 py-2.5 transition-colors hover:bg-accent", children: [getRouteIcon(route.type), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "font-medium", children: route.name }), route.description && _jsx("span", { className: "text-xs text-muted-foreground", children: route.description })] }), _jsx(ArrowRight, { className: "ml-auto h-4 w-4 opacity-0 transition-opacity group-hover:opacity-70" })] }, route.id || `plugin-${route.name}-${route.path}`))) }))] }), _jsx("div", { className: "border-t bg-card p-2", children: _jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [_jsxs("div", { className: "flex gap-2", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "border bg-muted px-1.5 py-0.5 text-[10px]", children: "\u2191" }), _jsx("kbd", { className: "border bg-muted px-1.5 py-0.5 text-[10px]", children: "\u2193" }), _jsx("span", { children: t('globalSearch.navigate') })] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "border bg-muted px-1.5 py-0.5 text-[10px]", children: "Enter" }), _jsx("span", { children: t('globalSearch.select') })] })] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "border bg-muted px-1.5 py-0.5 text-[10px]", children: "Esc" }), _jsx("span", { children: t('globalSearch.close') })] })] }) })] }));
|
|
134
134
|
};
|
|
@@ -20,5 +20,5 @@ export const ActiveAdmins = () => {
|
|
|
20
20
|
else
|
|
21
21
|
return t('awesomeMenu.above5MinAgo');
|
|
22
22
|
};
|
|
23
|
-
return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", size: "sm", className: "h-10", children: t('awesomeMenu.activeAdministratorsValue', { value: activeClients.length }) }) }), _jsx(PopoverContent, { className: "mr-4", children: _jsxs("div", { className: "flex flex-col gap-4
|
|
23
|
+
return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", size: "sm", className: "h-10", children: t('awesomeMenu.activeAdministratorsValue', { value: activeClients.length }) }) }), _jsx(PopoverContent, { className: "mr-4", children: _jsxs("div", { className: "flex flex-col gap-4", children: [_jsx(Label, { className: "select-none", children: t('awesomeMenu.activeAdministrators') }), activeClients.length ? (activeClients.map((client) => (_jsx("div", { className: "flex items-center justify-between", children: _jsxs("div", { className: "flex w-full flex-col", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm font-bold", children: [client.firstName, " ", client.lastName, " ", client.me && '(me)'] }), _jsx(motion.div, { animate: { scale: [1, 1.2, 1] }, transition: { duration: 1.5, repeat: Infinity }, className: "size-2 rounded-full bg-green-500" })] }), _jsx("span", { className: "text-sm text-muted-foreground", children: formatTimeAgo(client.lastActive) }), !client.me && (_jsx(NavLink, { to: client.location, className: "text-sm text-muted-foreground", viewTransition: true, children: client.location.replace(window.location.origin, '') }))] }) }, client.id)))) : (_jsx("div", { children: _jsx("span", { className: "text-sm text-muted-foreground", children: t('awesomeMenu.noActiveAdministrators') }) }))] }) })] }));
|
|
24
24
|
};
|
|
@@ -16,5 +16,5 @@ export function ChannelSwitcher({ className }) {
|
|
|
16
16
|
if (!channels || channels.length === 0) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
return (_jsx("div", { className: className, children: _jsxs(Select, { defaultValue: selectedChannel?.id, onValueChange: onChannelChange, value: selectedChannel?.id, children: [_jsx(SelectTrigger, { className: cn('flex items-center gap-2 [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate'), "aria-label": "Select
|
|
19
|
+
return (_jsx("div", { className: className, children: _jsxs(Select, { defaultValue: selectedChannel?.id, onValueChange: onChannelChange, value: selectedChannel?.id, children: [_jsx(SelectTrigger, { className: cn('flex h-9 items-center gap-2 border-border/80 bg-card px-3 text-xs font-medium [&_svg]:h-4 [&_svg]:w-4 [&_svg]:shrink-0 [&>span]:line-clamp-1 [&>span]:flex [&>span]:w-full [&>span]:items-center [&>span]:gap-1 [&>span]:truncate'), "aria-label": "Select a channel", children: _jsx(SelectValue, { children: _jsx("span", { className: "ml-1", children: getChannelLabel(channels.find((account) => account.id === selectedChannel?.id)?.code) }) }) }), _jsx(SelectContent, { children: channels.map((channel) => (_jsx(SelectItem, { value: channel.id, children: _jsx("div", { className: "flex items-center gap-3 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-foreground", children: getChannelLabel(channel.code) }) }, channel.code))) })] }) }));
|
|
20
20
|
}
|
|
@@ -23,5 +23,5 @@ export const LanguagesDropdown = () => {
|
|
|
23
23
|
})));
|
|
24
24
|
const Flag = langFlagDict[contentLng] || EU;
|
|
25
25
|
const contentLanguages = selectedChannel?.availableLanguageCodes || [];
|
|
26
|
-
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", className: "h-9", children: [t('language'), _jsx(Badge, { variant: "outline", className: "ml-2", children: _jsx(Flag, { className: "size-4" }) })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "z-[150]", children: [_jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { children: _jsx("span", { children: t('content') }) }), _jsx(DropdownMenuPortal, { children: _jsx(DropdownMenuSubContent, { className: "z-[150]", children: contentLanguages.map((lng) => (_jsxs(DropdownMenuItem, { onClick: () => lng !== contentLng && setContentLng(lng), children: [_jsx("span", { children: getLanguageName(lng, uiLng) }), lng === contentLng && _jsx(Check, { className: "ml-auto size-4" })] }, lng))) }) })] }), _jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { children: _jsx("span", { children: "UI" }) }), _jsx(DropdownMenuPortal, { children: _jsx(DropdownMenuSubContent, { className: "z-[150]", children: uiLanguages.map((lng) => (_jsxs(DropdownMenuItem, { onClick: () => lng !== uiLng && setUiLng(lng), children: [_jsx("span", { children: getLanguageName(lng) }), lng === uiLng && _jsx(Check, { className: "ml-auto size-4" })] }, lng))) }) })] })] })] }));
|
|
26
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", className: "h-9 px-3 text-xs", children: [t('language'), _jsx(Badge, { variant: "outline", className: "ml-2 h-5 px-1.5", children: _jsx(Flag, { className: "size-4" }) })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "z-[150]", children: [_jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { children: _jsx("span", { children: t('content') }) }), _jsx(DropdownMenuPortal, { children: _jsx(DropdownMenuSubContent, { className: "z-[150]", children: contentLanguages.map((lng) => (_jsxs(DropdownMenuItem, { onClick: () => lng !== contentLng && setContentLng(lng), children: [_jsx("span", { children: getLanguageName(lng, uiLng) }), lng === contentLng && _jsx(Check, { className: "ml-auto size-4" })] }, lng))) }) })] }), _jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { children: _jsx("span", { children: "UI" }) }), _jsx(DropdownMenuPortal, { children: _jsx(DropdownMenuSubContent, { className: "z-[150]", children: uiLanguages.map((lng) => (_jsxs(DropdownMenuItem, { onClick: () => lng !== uiLng && setUiLng(lng), children: [_jsx("span", { children: getLanguageName(lng) }), lng === uiLng && _jsx(Check, { className: "ml-auto size-4" })] }, lng))) }) })] })] })] }));
|
|
27
27
|
};
|
|
@@ -260,12 +260,12 @@ export function Navigation({ isCollapsed }) {
|
|
|
260
260
|
// );
|
|
261
261
|
const defaultAccordionOpenValue = ['shop-group', 'assortment-group'];
|
|
262
262
|
if (!loaded) {
|
|
263
|
-
return (_jsx("div", { className: "relative overflow-y-auto", children: _jsx("div", { className: "flex h-[calc(100%-
|
|
263
|
+
return (_jsx("div", { className: "relative overflow-y-auto", children: _jsx("div", { className: "flex h-[calc(100%-64px)] flex-col gap-3 pb-2 lg:h-[calc(100%-72px)]", children: Array.from({ length: 3 }).map((_, groupIdx) => (_jsxs("div", { className: "flex flex-col gap-1 px-2.5", children: [!isCollapsed && (_jsx("div", { className: "px-3 py-2", children: _jsx(Skeleton, { className: "h-3 w-20" }) })), Array.from({ length: groupIdx === 0 ? 4 : groupIdx === 1 ? 5 : 3 }).map((_, linkIdx) => (_jsxs("div", { className: cn('flex items-center px-3 py-2', isCollapsed && 'justify-center px-0'), children: [_jsx(Skeleton, { className: cn('size-4 shrink-0', isCollapsed && 'size-6') }), !isCollapsed && _jsx(Skeleton, { className: "ml-2 h-4 w-24" })] }, linkIdx)))] }, groupIdx))) }) }));
|
|
264
264
|
}
|
|
265
|
-
return (_jsx("div", { className: "relative overflow-y-auto", children: _jsx("div", { "data-collapsed": isCollapsed, className: "group flex h-[calc(100%-
|
|
265
|
+
return (_jsx("div", { className: "relative overflow-y-auto", children: _jsx("div", { "data-collapsed": isCollapsed, className: "group flex h-[calc(100%-64px)] flex-col gap-2 py-2 data-[collapsed=true]:py-2 lg:h-[calc(100%-72px)]", children: _jsx(Accordion, { type: "multiple", className: "w-full", defaultValue: defaultAccordionOpenValue, value: isCollapsed ? permittedNavigationGroups.map((g) => g.id) : undefined, children: permittedNavigationGroups.map((group) => (_jsxs(AccordionItem, { value: group.id, className: "border-none", children: [!isCollapsed && (_jsx(AccordionTrigger, { className: cn('flex items-center justify-between px-3 py-2 hover:no-underline'), children: _jsxs("div", { className: "flex items-center gap-2 px-1", children: [_jsx("h4", { className: "text-[11px] font-semibold tracking-[0.08em] text-muted-foreground uppercase", children: group.label }), getNavigationNotification(group.id), viewMarkers ? (_jsx("p", { className: "text-xs font-semibold text-muted-foreground lowercase dark:text-muted-foreground", children: group.id })) : null] }) })), _jsx(AccordionContent, { className: cn(isCollapsed ? 'py-1' : 'pb-2'), children: _jsx("nav", { id: group.id, className: "grid gap-1 px-2.5 text-muted-foreground group-[[data-collapsed=true]]:justify-center group-[[data-collapsed=true]]:px-2", children: group.links.map((link, index) => {
|
|
266
266
|
const notifications = getNavigationNotification(link.id);
|
|
267
267
|
return (_jsx(React.Fragment, { children: isCollapsed ? (_jsxs(Tooltip, { delayDuration: 0, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { children: _jsx(NavLink, { to: link.href, viewTransition: true, children: _jsxs("div", { className: cn(buttonVariants({ variant: 'navigation-link', size: 'icon' }), 'h-9 w-9', location.pathname === link.href &&
|
|
268
|
-
'bg-
|
|
269
|
-
'bg-
|
|
268
|
+
'bg-primary/10 text-primary opacity-100 hover:bg-primary/10 hover:text-primary'), children: [_jsx(link.icon, { className: "size-5" }), _jsx("span", { className: "sr-only", children: link.title })] }) }) }) }), _jsxs(TooltipContent, { side: "right", className: "relative flex items-center gap-4", children: [viewMarkers ? (_jsx("div", { className: "text-xs font-semibold text-muted-foreground lowercase dark:text-muted-foreground", children: link.id })) : null, capitalizeFirstLetter(link.title), notifications] })] }, index)) : (_jsx(NavLink, { to: link.href, viewTransition: true, children: _jsxs("div", { id: link.id, className: cn('relative flex h-9 items-center justify-start px-3 text-sm font-medium capitalize transition-colors hover:bg-muted/70 hover:text-foreground', location.pathname === link.href &&
|
|
269
|
+
'bg-primary/10 text-primary opacity-100 hover:bg-primary/10 hover:text-primary'), children: [viewMarkers ? (_jsx("div", { className: "absolute top-1/2 right-2 -translate-y-1/2 text-xs font-semibold text-muted-foreground lowercase dark:text-muted-foreground", children: link.id })) : null, _jsx(link.icon, { className: "mr-2 size-4 shrink-0" }), capitalizeFirstLetter(link.title), notifications] }) })) }, link.id));
|
|
270
270
|
}) }) })] }, group.id))) }) }) }));
|
|
271
271
|
}
|
|
@@ -7,6 +7,6 @@ export const NavigationFooter = ({ isCollapsed }) => {
|
|
|
7
7
|
const { t } = useTranslation('common');
|
|
8
8
|
const userPermissions = useServer((p) => p.userPermissions);
|
|
9
9
|
const isPermittedToExtensions = userPermissions.includes(Permission.ReadSettings);
|
|
10
|
-
return (_jsxs("div", { className: "flex w-full flex-col gap-2 bg-
|
|
11
|
-
'bg-
|
|
10
|
+
return (_jsxs("div", { className: "flex w-full flex-col gap-2 border-t bg-card/80 py-2 text-xs text-muted-foreground select-none", children: [isPermittedToExtensions && !isCollapsed && (_jsxs(_Fragment, { children: [_jsx("div", { children: _jsx(NavLink, { to: Routes.extensions, viewTransition: true, children: _jsxs("div", { className: cn('relative mx-2 flex h-8 items-center justify-center px-3 text-sm font-medium capitalize transition-colors hover:bg-muted/70 hover:text-foreground', location.pathname === Routes.extensions &&
|
|
11
|
+
'bg-primary/10 text-primary opacity-100 hover:bg-primary/10 hover:text-primary'), children: [_jsx(Puzzle, { className: "mr-2 size-4" }), capitalizeFirstLetter(t('menu.extensions'))] }) }) }), _jsx(Separator, {})] })), _jsxs("div", { className: "flex items-center justify-center gap-1 px-2", children: [!isCollapsed && _jsx("p", { className: "uppercase", children: "Deenruv" }), _jsxs("span", { children: [!isCollapsed ? 'ver. ' : 'v. ', window.__DEENRUV_SETTINGS__.appVersion] })] })] }));
|
|
12
12
|
};
|
|
@@ -87,5 +87,5 @@ export const Notifications = () => {
|
|
|
87
87
|
prevJobQueuesRef.current = [...jobQueues];
|
|
88
88
|
}
|
|
89
89
|
}, [jobQueues, status]);
|
|
90
|
-
return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "icon", className: "relative size-
|
|
90
|
+
return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "icon", className: "relative size-9", children: [_jsx(Bell, { className: "size-4" }), hasUnread && (_jsx("span", { className: "absolute top-1.5 right-1.5 size-2 rounded-full bg-red-500", children: _jsx("span", { className: "absolute inset-0 animate-ping rounded-full bg-red-400 opacity-75" }) })), _jsx("span", { className: "sr-only", children: t('notificationsBox.toggleNotifications') })] }) }), _jsx(PopoverContent, { className: "z-[2138] w-[min(28rem,calc(100vw-2rem))] p-0", align: "end", children: _jsx(Tabs, { defaultValue: "ALL", className: "w-full", children: _jsxs(Card, { className: "w-full border-0 shadow-none", children: [_jsxs(CardHeader, { className: cn('flex w-full flex-col items-start justify-start gap-2 bg-card p-0', components.length === 0 && 'pb-3'), children: [_jsxs("div", { className: "flex h-full w-full flex-1 items-center justify-between px-4 pt-3", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx(CardTitle, { className: "text-base", children: t('notificationsBox.notifications') }), _jsx(CardDescription, { className: "mt-1 text-xs", children: t('notificationsBox.recentNotifications') })] }), notifications.length > 0 && (_jsxs(Button, { variant: "ghost", size: "sm", className: "h-8 text-xs", onClick: clearAllNotifications, children: [_jsx(Trash2, { className: "mr-1 size-3" }), t('notificationsBox.clearAll')] }))] }), components.length !== 0 && (_jsxs(TabsList, { className: "m-0 w-full bg-muted/50", children: [_jsx(TabsTrigger, { value: "ALL", className: "w-full text-left", children: t('notificationsBox.all') }), cyclingNotifications.map((notification) => (_jsx(TabsTrigger, { value: notification.id, className: "w-full text-left", children: notification.id }, notification.id)))] }))] }), _jsxs(CardContent, { className: "max-h-[400px] overflow-auto p-0", children: [_jsx(TabsContent, { value: "ALL", className: "mt-0", children: notifications.length > 0 ? (_jsx("div", { className: "divide-y", children: notifications.map((notification) => (_jsxs("div", { className: `flex items-start gap-3 p-4 transition-colors ${notification.read ? 'bg-card' : 'bg-accent/40'}`, children: [_jsx("div", { className: "mt-0.5", children: notification.icon }), _jsxs("div", { className: "flex-1 space-y-1", children: [_jsx("p", { className: "text-sm leading-none font-medium", children: notification.title }), _jsx("p", { className: "text-xs text-muted-foreground", children: notification.description }), _jsxs("div", { className: "flex items-center pt-1", children: [_jsx(Clock, { className: "mr-1 size-3 text-muted-foreground" }), _jsx("span", { className: "text-xs text-muted-foreground", children: notification.time })] })] })] }, notification.id))) })) : (_jsxs("div", { className: "flex flex-col items-center justify-center px-4 py-8 text-center", children: [_jsx("div", { className: "mb-3 bg-muted p-3", children: _jsx(Bell, { className: "size-6 text-muted-foreground" }) }), _jsx("h3", { className: "text-sm font-medium", children: t('notificationsBox.emptyStateMessage') }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: t('notificationsBox.emptyStateDescription') })] })) }), components.map((notification) => (_jsx(TabsContent, { value: notification.id, children: notification.component }, notification.id)))] }), hasUnread && (_jsx(CardFooter, { className: "flex items-center justify-end p-4", children: _jsxs(Button, { variant: "ghost", size: "sm", className: "h-8 text-xs", onClick: markAllAsRead, children: [_jsx(Check, { className: "mr-1 size-3" }), t('notificationsBox.markAllAsRead')] }) }))] }) }) })] }));
|
|
91
91
|
};
|
|
@@ -11,9 +11,9 @@ import { BrandLogo } from "../BrandLogo.js";
|
|
|
11
11
|
import { LanguagesDropdown } from './LanguagesDropdown.js';
|
|
12
12
|
import { Notifications } from './Notifications.js';
|
|
13
13
|
import { NavigationFooter } from "./NavigationFooter.js";
|
|
14
|
-
const ResizablePanelGroup = ({ className, ...props }) => (_jsx(ResizablePrimitive.
|
|
14
|
+
const ResizablePanelGroup = ({ className, ...props }) => (_jsx(ResizablePrimitive.Group, { className: cn('flex h-full w-full data-[orientation=vertical]:flex-col', className), ...props }));
|
|
15
15
|
const ResizablePanel = ResizablePrimitive.Panel;
|
|
16
|
-
const ResizableHandle = ({ withHandle, className, ...props }) => (_jsx(ResizablePrimitive.
|
|
16
|
+
const ResizableHandle = ({ withHandle, className, ...props }) => (_jsx(ResizablePrimitive.Separator, { className: cn('relative flex w-px items-center justify-center bg-border/70 after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-none data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:left-0 data-[orientation=vertical]:after:h-1 data-[orientation=vertical]:after:w-full data-[orientation=vertical]:after:translate-x-0 data-[orientation=vertical]:after:-translate-y-1/2 [&[data-orientation=vertical]>div]:rotate-90', className), ...props, children: withHandle && (_jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center border bg-background text-muted-foreground", children: _jsx(GripVertical, { className: "size-2.5" }) })) }));
|
|
17
17
|
const removableCrumbs = ['draft', 'admin-ui'];
|
|
18
18
|
export const Menu = ({ children }) => {
|
|
19
19
|
const openGlobalSearch = useGlobalSearch((state) => state.open);
|
|
@@ -42,18 +42,16 @@ export const Menu = ({ children }) => {
|
|
|
42
42
|
.flatMap((p) => p.split('/'))
|
|
43
43
|
.filter(Boolean)
|
|
44
44
|
.filter((crumb) => !removableCrumbs.includes(crumb)), [matches]);
|
|
45
|
-
return (_jsx("div", { className: "w-full
|
|
46
|
-
document.cookie = `react-resizable-panels:layout=${JSON.stringify(
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
document.cookie = `react-resizable-panels:collapsed=${JSON.stringify(true)}`;
|
|
53
|
-
}, className: cn(isCollapsed && 'min-w-[50px] transition-all duration-300 ease-in-out'), children: [_jsx("div", { className: cn('flex h-[80px] flex-col items-center justify-center gap-4 border-b'), children: _jsx("div", { className: `flex h-full items-center justify-center ${!isCollapsed && 'w-full'} cursor-pointer p-4`, onClick: () => navigate(Routes.dashboard, { viewTransition: true }), children: _jsx(BrandLogo, { isCollapsed: isCollapsed }) }) }), _jsxs("div", { className: "flex h-[calc(100vh-80px)] flex-col justify-between", children: [_jsx(Navigation, { isCollapsed: isCollapsed }), _jsx(NavigationFooter, { isCollapsed: isCollapsed })] })] }), _jsx(ResizableHandle, { withHandle: true }), _jsxs(ResizablePanel, { children: [_jsxs("div", { className: "flex h-[70px] items-center border-b p-4 lg:h-[80px] lg:px-6", children: [_jsxs("div", { className: "flex flex-col items-start justify-center", children: [_jsx(Breadcrumb, { children: _jsx(BreadcrumbList, { children: crumbs.length ? (crumbs.map((c, i) => {
|
|
45
|
+
return (_jsx("div", { className: "w-full bg-background", children: _jsx("div", { className: "flex h-full max-h-screen flex-col", children: _jsx("div", { className: "flex-1", children: _jsx(TooltipProvider, { delayDuration: 100, children: _jsxs(ResizablePanelGroup, { onLayoutChanged: (layout) => {
|
|
46
|
+
document.cookie = `react-resizable-panels:layout=${JSON.stringify(Object.values(layout))}`;
|
|
47
|
+
}, orientation: "horizontal", className: "size-full", children: [_jsxs(ResizablePanel, { id: "navigation", defaultSize: "16%", collapsedSize: "4%", collapsible: true, minSize: "11%", maxSize: "18%", onResize: (size) => {
|
|
48
|
+
const collapsed = size.asPercentage <= 4;
|
|
49
|
+
setIsCollapsed(collapsed);
|
|
50
|
+
document.cookie = `react-resizable-panels:collapsed=${JSON.stringify(collapsed)}`;
|
|
51
|
+
}, className: cn(isCollapsed && 'min-w-[50px] transition-all duration-300 ease-in-out'), children: [_jsx("div", { className: cn('flex h-[72px] flex-col items-center justify-center gap-4 border-b bg-card/80'), children: _jsx("div", { className: `flex h-full items-center justify-center ${!isCollapsed && 'w-full'} cursor-pointer px-4 py-3`, onClick: () => navigate(Routes.dashboard, { viewTransition: true }), children: _jsx(BrandLogo, { isCollapsed: isCollapsed }) }) }), _jsxs("div", { className: "flex h-[calc(100vh-72px)] flex-col justify-between bg-card/70", children: [_jsx(Navigation, { isCollapsed: isCollapsed }), _jsx(NavigationFooter, { isCollapsed: isCollapsed })] })] }), _jsx(ResizableHandle, { withHandle: true }), _jsxs(ResizablePanel, { id: "content", children: [_jsxs("div", { className: "flex h-[64px] items-center border-b bg-background/95 px-3 backdrop-blur lg:h-[72px] lg:px-5", children: [_jsxs("div", { className: "flex flex-col items-start justify-center", children: [_jsx(Breadcrumb, { children: _jsx(BreadcrumbList, { children: crumbs.length ? (crumbs.map((c, i) => {
|
|
54
52
|
linkPath.push(c);
|
|
55
|
-
return (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: _jsx(NavLink, { to: buildURL(linkPath), viewTransition: true, children: _jsx("p", { className: cn('text-
|
|
56
|
-
})) : (_jsx(BreadcrumbItem, { children: _jsx(NavLink, { to: Routes.dashboard, viewTransition: true, children: _jsx("p", { className: "text-
|
|
53
|
+
return (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: _jsx(NavLink, { to: buildURL(linkPath), viewTransition: true, children: _jsx("p", { className: cn('text-sm font-semibold tracking-tight text-foreground capitalize'), children: i === 0 ? t('menu.' + dashToCamelCase(c)) : c }) }) }), i !== crumbs.length - 1 && (_jsx(BreadcrumbSeparator, { children: _jsx(Slash, { className: "text-muted-foreground" }) }))] }, c));
|
|
54
|
+
})) : (_jsx(BreadcrumbItem, { children: _jsx(NavLink, { to: Routes.dashboard, viewTransition: true, children: _jsx("p", { className: "text-xl font-semibold tracking-tight text-foreground", children: t('dashboard') }) }) })) }) }), _jsx("div", { className: "flex items-center gap-2" })] }), _jsxs("div", { className: "flex flex-1 items-center justify-end gap-1.5", children: [topNavigationComponents && topNavigationComponents.length > 0 ? (_jsx("div", { className: "flex items-center gap-2", children: topNavigationComponents.map(({ component: Component }, index) => (_jsx(Component, {}, index))) })) : null, _jsx(LanguagesDropdown, {}), _jsx(ChannelSwitcher, { className: "min-w-44" }), _jsx(Button, { onClick: openGlobalSearch, variant: "outline", size: "icon", className: "relative size-9", children: _jsx(SearchIcon, { className: "size-4" }) }), _jsx(Notifications, {}), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "icon", className: "size-9", children: [theme === 'light' ? (_jsx(Sun, { className: "size-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" })) : theme === 'dark' ? (_jsx(Moon, { className: "absolute size-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" })) : (_jsx(SunMoon, { className: "absolute size-[1.2rem] rotate-90 transition-all" })), _jsx("span", { className: "sr-only", children: t('toggleTheme') })] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuItem, { onClick: () => setTheme('light'), children: t('themeLight') }), _jsx(DropdownMenuItem, { onClick: () => setTheme('dark'), children: t('themeDark') }), _jsx(DropdownMenuItem, { onClick: () => setTheme('system'), children: t('themeSystem') })] })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", size: "icon", className: "size-9", children: _jsx(MenuIcon, { className: "size-4" }) }) }), _jsxs(DropdownMenuContent, { className: "z-[150] mr-6 min-w-40", children: [activeAdministrator?.emailAddress && (_jsxs(_Fragment, { children: [_jsxs(DropdownMenuLabel, { className: "flex items-center gap-2 px-3 py-2 font-medium", children: [_jsx("div", { className: "flex size-6 items-center justify-center bg-primary/10 text-xs font-semibold text-primary", children: activeAdministrator.firstName.charAt(0).toUpperCase() }), _jsxs("div", { className: "truncate text-sm", children: [activeAdministrator.firstName, " ", activeAdministrator.lastName] })] }), _jsx(DropdownMenuSeparator, { className: "my-1" })] })), _jsxs(DropdownMenuItem, { className: "flex cursor-pointer items-center gap-2 text-nowrap", onSelect: rebuildSearchIndex, children: [_jsx(RotateCwSquare, { className: "size-4" }), t('rebuildSerachIndex')] }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuGroup, { children: _jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { children: t('fastLinks') }), _jsx(DropdownMenuPortal, { children: _jsxs(DropdownMenuSubContent, { children: [_jsxs(DropdownMenuItem, { className: "flex cursor-pointer items-center gap-2 text-nowrap", onSelect: () => navigate(Routes.status, { viewTransition: true }), children: [_jsx(RotateCwSquare, { className: "size-4" }), t('systemStatus')] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: "flex cursor-pointer items-center gap-2 text-nowrap", onSelect: () => navigate(Routes.globalSettings, { viewTransition: true }), children: [_jsx(RotateCwSquare, { className: "size-4" }), t('globalSettings')] })] }) })] }) }), topNavigationActionsMenu?.length && topNavigationActionsMenu.length > 0 ? (_jsxs(_Fragment, { children: [_jsx(DropdownMenuSeparator, {}), topNavigationActionsMenu.map((action) => (_jsxs(DropdownMenuItem, { className: "flex cursor-pointer items-center gap-2", onSelect: action.onClick, children: [action.icon && _jsx(action.icon, { className: "size-4" }), action.label] }, action.label)))] })) : null, _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { className: "flex cursor-pointer items-center gap-2 text-red-500", onSelect: async () => {
|
|
57
55
|
const result = await createDialog({
|
|
58
56
|
title: t('logOutConfirmation'),
|
|
59
57
|
description: t('logOutConfirmationDescription'),
|
|
@@ -64,5 +62,5 @@ export const Menu = ({ children }) => {
|
|
|
64
62
|
});
|
|
65
63
|
if (result)
|
|
66
64
|
logOut();
|
|
67
|
-
}, children: [_jsx(LogOutIcon, { className: "size-4" }), t('logOut')] })] })] })] })] }), _jsx(ScrollArea, { className: "relative h-[calc(100vh-
|
|
65
|
+
}, children: [_jsx(LogOutIcon, { className: "size-4" }), t('logOut')] })] })] })] })] }), _jsx(ScrollArea, { className: "relative h-[calc(100vh-64px)] overflow-y-hidden lg:h-[calc(100vh-72px)]", children: children })] })] }) }) }) }) }));
|
|
68
66
|
};
|
package/dist/index.css
CHANGED
|
@@ -24,47 +24,47 @@
|
|
|
24
24
|
@plugin "@tailwindcss/typography";
|
|
25
25
|
|
|
26
26
|
:root {
|
|
27
|
-
--background: hsl(
|
|
28
|
-
--foreground: hsl(
|
|
27
|
+
--background: hsl(225 33% 97%);
|
|
28
|
+
--foreground: hsl(230 20% 7%);
|
|
29
29
|
|
|
30
30
|
--card: hsl(0 0% 100%);
|
|
31
|
-
--card-foreground: hsl(
|
|
31
|
+
--card-foreground: hsl(230 20% 7%);
|
|
32
32
|
|
|
33
33
|
--popover: hsl(0 0% 100%);
|
|
34
|
-
--popover-foreground: hsl(
|
|
34
|
+
--popover-foreground: hsl(230 20% 7%);
|
|
35
35
|
|
|
36
|
-
--primary: hsl(
|
|
37
|
-
--primary-foreground: hsl(0 0%
|
|
36
|
+
--primary: hsl(238 70% 58%);
|
|
37
|
+
--primary-foreground: hsl(0 0% 100%);
|
|
38
38
|
|
|
39
|
-
--secondary: hsl(
|
|
40
|
-
--secondary-foreground: hsl(
|
|
39
|
+
--secondary: hsl(225 28% 94%);
|
|
40
|
+
--secondary-foreground: hsl(230 18% 12%);
|
|
41
41
|
|
|
42
|
-
--muted: hsl(
|
|
43
|
-
--muted-foreground: hsl(
|
|
42
|
+
--muted: hsl(225 24% 95%);
|
|
43
|
+
--muted-foreground: hsl(228 10% 41%);
|
|
44
44
|
|
|
45
|
-
--accent: hsl(
|
|
46
|
-
--accent-foreground: hsl(
|
|
45
|
+
--accent: hsl(238 80% 96%);
|
|
46
|
+
--accent-foreground: hsl(238 70% 42%);
|
|
47
47
|
|
|
48
48
|
--destructive: hsl(0 84.2% 60.2%);
|
|
49
49
|
--destructive-foreground: hsl(0 0% 98%);
|
|
50
50
|
|
|
51
|
-
--border: hsl(
|
|
52
|
-
--input: hsl(
|
|
53
|
-
--ring: hsl(
|
|
51
|
+
--border: hsl(225 18% 88%);
|
|
52
|
+
--input: hsl(225 18% 86%);
|
|
53
|
+
--ring: hsl(238 70% 58%);
|
|
54
54
|
|
|
55
|
-
--radius:
|
|
55
|
+
--radius: 0rem;
|
|
56
56
|
|
|
57
57
|
--warning: hsl(38 92% 50%);
|
|
58
58
|
--warning-foreground: hsl(48 96% 89%);
|
|
59
59
|
|
|
60
|
-
--navigation-link: hsl(
|
|
60
|
+
--navigation-link: hsl(228 14% 28%);
|
|
61
61
|
|
|
62
|
-
--topbar-height:
|
|
63
|
-
--topbar-height-lg:
|
|
62
|
+
--topbar-height: 64px;
|
|
63
|
+
--topbar-height-lg: 72px;
|
|
64
64
|
|
|
65
|
-
--page-padding-total-y:
|
|
66
|
-
--page-padding-total-y-md:
|
|
67
|
-
--page-padding-total-y-lg:
|
|
65
|
+
--page-padding-total-y: 2rem;
|
|
66
|
+
--page-padding-total-y-md: 3.25rem;
|
|
67
|
+
--page-padding-total-y-lg: 1.5rem;
|
|
68
68
|
|
|
69
69
|
--page-content-h: calc(100vh - var(--topbar-height) - var(--page-padding-total-y));
|
|
70
70
|
--page-content-h-md: calc(100vh - var(--topbar-height) - var(--page-padding-total-y-md));
|
|
@@ -72,38 +72,38 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.dark {
|
|
75
|
-
--background: hsl(
|
|
76
|
-
--foreground: hsl(
|
|
75
|
+
--background: hsl(230 22% 5%);
|
|
76
|
+
--foreground: hsl(220 22% 96%);
|
|
77
77
|
|
|
78
|
-
--card: hsl(
|
|
79
|
-
--card-foreground: hsl(
|
|
78
|
+
--card: hsl(228 18% 8%);
|
|
79
|
+
--card-foreground: hsl(220 22% 96%);
|
|
80
80
|
|
|
81
|
-
--popover: hsl(
|
|
82
|
-
--popover-foreground: hsl(
|
|
81
|
+
--popover: hsl(228 18% 9%);
|
|
82
|
+
--popover-foreground: hsl(220 22% 96%);
|
|
83
83
|
|
|
84
|
-
--primary: hsl(
|
|
85
|
-
--primary-foreground: hsl(
|
|
84
|
+
--primary: hsl(238 80% 66%);
|
|
85
|
+
--primary-foreground: hsl(0 0% 100%);
|
|
86
86
|
|
|
87
|
-
--secondary: hsl(
|
|
88
|
-
--secondary-foreground: hsl(
|
|
87
|
+
--secondary: hsl(228 16% 14%);
|
|
88
|
+
--secondary-foreground: hsl(220 22% 96%);
|
|
89
89
|
|
|
90
|
-
--muted: hsl(
|
|
91
|
-
--muted-foreground: hsl(
|
|
90
|
+
--muted: hsl(228 16% 14%);
|
|
91
|
+
--muted-foreground: hsl(225 10% 65%);
|
|
92
92
|
|
|
93
|
-
--accent: hsl(
|
|
94
|
-
--accent-foreground: hsl(
|
|
93
|
+
--accent: hsl(238 34% 18%);
|
|
94
|
+
--accent-foreground: hsl(238 100% 82%);
|
|
95
95
|
|
|
96
96
|
--destructive: hsl(0 62.8% 30.6%);
|
|
97
97
|
--destructive-foreground: hsl(0 0% 98%);
|
|
98
98
|
|
|
99
|
-
--border: hsl(
|
|
100
|
-
--input: hsl(
|
|
101
|
-
--ring: hsl(
|
|
99
|
+
--border: hsl(228 14% 20%);
|
|
100
|
+
--input: hsl(228 14% 22%);
|
|
101
|
+
--ring: hsl(238 80% 66%);
|
|
102
102
|
|
|
103
103
|
--warning: hsl(48 96% 89%);
|
|
104
104
|
--warning-foreground: hsl(38 92% 50%);
|
|
105
105
|
|
|
106
|
-
--navigation-link: hsl(
|
|
106
|
+
--navigation-link: hsl(220 18% 86%);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
@theme inline {
|
|
@@ -140,9 +140,9 @@
|
|
|
140
140
|
|
|
141
141
|
--color-navigation-link: var(--navigation-link);
|
|
142
142
|
|
|
143
|
-
--radius-lg:
|
|
144
|
-
--radius-md:
|
|
145
|
-
--radius-sm:
|
|
143
|
+
--radius-lg: 0rem;
|
|
144
|
+
--radius-md: 0rem;
|
|
145
|
+
--radius-sm: 0rem;
|
|
146
146
|
|
|
147
147
|
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
148
148
|
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
@@ -176,6 +176,16 @@
|
|
|
176
176
|
background-color: var(--background);
|
|
177
177
|
color: var(--foreground);
|
|
178
178
|
box-sizing: border-box;
|
|
179
|
+
font-family:
|
|
180
|
+
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
181
|
+
font-feature-settings:
|
|
182
|
+
"cv02", "cv03", "cv04", "cv11";
|
|
183
|
+
text-rendering: geometricPrecision;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
::selection {
|
|
187
|
+
background-color: var(--accent);
|
|
188
|
+
color: var(--accent-foreground);
|
|
179
189
|
}
|
|
180
190
|
}
|
|
181
191
|
|
|
@@ -200,7 +210,7 @@
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
*::-webkit-scrollbar-thumb {
|
|
203
|
-
background-color: var(--
|
|
213
|
+
background-color: color-mix(in srgb, var(--foreground) 18%, transparent);
|
|
204
214
|
position: relative;
|
|
205
215
|
border-radius: 9999px;
|
|
206
216
|
}
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"inherit": "Filter inheritance",
|
|
39
39
|
"condition": "Condition",
|
|
40
40
|
"addCondition": "Add condition",
|
|
41
|
+
"noAvailableConditions": "Filter conditions are still loading",
|
|
41
42
|
"addFacets": "Adding aspect values",
|
|
42
43
|
"labels": {
|
|
43
44
|
"codes": {
|
|
@@ -55,6 +56,12 @@
|
|
|
55
56
|
},
|
|
56
57
|
"contents": {
|
|
57
58
|
"title": "Content"
|
|
59
|
+
},
|
|
60
|
+
"channels": {
|
|
61
|
+
"title": "Additional channels",
|
|
62
|
+
"description": "Select additional channels to assign after creating the collection. The current channel is assigned automatically.",
|
|
63
|
+
"currentChannel": "Current channel",
|
|
64
|
+
"noChannels": "No channels available"
|
|
58
65
|
}
|
|
59
66
|
},
|
|
60
67
|
"visibility": {
|
|
@@ -962,6 +962,7 @@
|
|
|
962
962
|
"tags": "Filter by tag",
|
|
963
963
|
"perPageValue": "{{value}} per page",
|
|
964
964
|
"confirmButton": "Add resource",
|
|
965
|
+
"uploadButton": "Upload from disk",
|
|
965
966
|
"cancel": "Cancel",
|
|
966
967
|
"noImages": "No resources for a specific search",
|
|
967
968
|
"description": "Uploading and managing resources that can be used in content"
|
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
"confirm": "Delete draft",
|
|
41
41
|
"cancel": "Cancel"
|
|
42
42
|
},
|
|
43
|
+
"createDraftOrder": {
|
|
44
|
+
"title": "Create a new draft order",
|
|
45
|
+
"description": "A draft order will only be created after you confirm. You can then add products, a customer, and shipping details.",
|
|
46
|
+
"startButton": "Start draft order",
|
|
47
|
+
"cancelButton": "Back to orders",
|
|
48
|
+
"creating": "Creating draft...",
|
|
49
|
+
"error": "Failed to create draft order"
|
|
50
|
+
},
|
|
43
51
|
"searchProduct": {
|
|
44
52
|
"id": "ID",
|
|
45
53
|
"image": "Image",
|
|
@@ -42,6 +42,14 @@
|
|
|
42
42
|
"removeVariant": "Usuń wariant",
|
|
43
43
|
"removeVariantFromChannel": "Usuń wariant z kanału"
|
|
44
44
|
},
|
|
45
|
+
"initialVariant": {
|
|
46
|
+
"title": "Initial variant",
|
|
47
|
+
"description": "Create one default variant together with this product. If the variant name is empty, the product name will be used.",
|
|
48
|
+
"sku": "SKU",
|
|
49
|
+
"price": "Price",
|
|
50
|
+
"name": "Variant name",
|
|
51
|
+
"namePlaceholder": "Use the product name"
|
|
52
|
+
},
|
|
45
53
|
"optionsTab": {
|
|
46
54
|
"placeholder": "Wpisz, aby dodać nową wartość opcji",
|
|
47
55
|
"groupName": "Nazwa grupy",
|
|
@@ -53,6 +61,7 @@
|
|
|
53
61
|
"noOptionValues": "Dodaj opcje powyżej, aby znaleźć je tutaj"
|
|
54
62
|
},
|
|
55
63
|
"variantsTab": {
|
|
64
|
+
"unnamedVariant": "Unnamed variant",
|
|
56
65
|
"emptyState": {
|
|
57
66
|
"title": "Nic tutaj nie ma",
|
|
58
67
|
"description": "Nie ma jeszcze żadnych wariantów. Użyj przycisku powyżej, aby je dodać, pod warunkiem, że dodałeś już jakieś opcje. Jeśli nie, utwórz je najpierw w zakładce Opcje."
|
|
@@ -128,6 +137,7 @@
|
|
|
128
137
|
"noAssets": "Nie ma jeszcze żadnych aktywów",
|
|
129
138
|
"setAsFeatured": "Ustaw jako polecane",
|
|
130
139
|
"editAsset": "Edytuj zdjęcie",
|
|
140
|
+
"uploadAsset": "Upload image",
|
|
131
141
|
"removeAsset": "Usuń zasób",
|
|
132
142
|
"usedForColorsDesc": "Użyj tego atrybutu dla facetów, którzy są kolorami",
|
|
133
143
|
"colorsCollectionDesc": "Użyj tego dla ścieżek produktu w KOLORZE (BLAT/CORPUS)",
|
|
@@ -186,9 +196,11 @@
|
|
|
186
196
|
"new": "Nowy wariant",
|
|
187
197
|
"selectOption": "Wybierz opcję",
|
|
188
198
|
"createBasic": "Dane podstawowe",
|
|
189
|
-
"createOptions": "Opcje"
|
|
199
|
+
"createOptions": "Opcje",
|
|
200
|
+
"createOptionsHint": "Add an option group from this panel to start choosing variant options. You can refine option values later in the Options tab."
|
|
190
201
|
},
|
|
191
202
|
"validation": {
|
|
192
|
-
"nameSlugRequired": "Pola nazwy i slug są wymagane"
|
|
203
|
+
"nameSlugRequired": "Pola nazwy i slug są wymagane",
|
|
204
|
+
"initialVariantSkuRequired": "Variant SKU is required"
|
|
193
205
|
}
|
|
194
206
|
}
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"inherit": "Dziedziczenie filtrów",
|
|
39
39
|
"condition": "Warunek",
|
|
40
40
|
"addCondition": "Dodaj warunek",
|
|
41
|
+
"noAvailableConditions": "Warunki filtrów nadal się ładują",
|
|
41
42
|
"addFacets": "Dodawanie wartości aspektów",
|
|
42
43
|
"labels": {
|
|
43
44
|
"codes": {
|
|
@@ -55,6 +56,12 @@
|
|
|
55
56
|
},
|
|
56
57
|
"contents": {
|
|
57
58
|
"title": "Zawartość"
|
|
59
|
+
},
|
|
60
|
+
"channels": {
|
|
61
|
+
"title": "Dodatkowe kanały",
|
|
62
|
+
"description": "Wybierz dodatkowe kanały, które mają zostać przypisane po utworzeniu kolekcji. Bieżący kanał zostanie przypisany automatycznie.",
|
|
63
|
+
"currentChannel": "Bieżący kanał",
|
|
64
|
+
"noChannels": "Brak dostępnych kanałów"
|
|
58
65
|
}
|
|
59
66
|
},
|
|
60
67
|
"visibility": {
|
|
@@ -961,6 +961,7 @@
|
|
|
961
961
|
"tags": "Filtruj według tagu",
|
|
962
962
|
"perPageValue": "{{value}} na stronę",
|
|
963
963
|
"confirmButton": "Dodaj zasób",
|
|
964
|
+
"uploadButton": "Prześlij z dysku",
|
|
964
965
|
"cancel": "Anuluj",
|
|
965
966
|
"noImages": "Brak zasobów dla określonego wyszukiwania",
|
|
966
967
|
"description": "Przesyłanie i zarządzanie zasobami, które mogą być używane w treści"
|
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
"confirm": "Usuń wersję roboczą",
|
|
41
41
|
"cancel": "Anuluj"
|
|
42
42
|
},
|
|
43
|
+
"createDraftOrder": {
|
|
44
|
+
"title": "Utwórz nowy projekt zamówienia",
|
|
45
|
+
"description": "Projekt zamówienia zostanie utworzony dopiero po potwierdzeniu. Następnie możesz dodać produkty, klienta i dane dostawy.",
|
|
46
|
+
"startButton": "Rozpocznij projekt zamówienia",
|
|
47
|
+
"cancelButton": "Wróć do zamówień",
|
|
48
|
+
"creating": "Tworzenie projektu...",
|
|
49
|
+
"error": "Nie udało się utworzyć projektu zamówienia"
|
|
50
|
+
},
|
|
43
51
|
"searchProduct": {
|
|
44
52
|
"id": "ID",
|
|
45
53
|
"image": "Obraz",
|