@hed-hog/core 0.0.298 → 0.0.300
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/dashboard/dashboard/dashboard.controller.d.ts +9 -0
- package/dist/dashboard/dashboard/dashboard.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard/dashboard.service.d.ts +9 -0
- package/dist/dashboard/dashboard/dashboard.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +14 -1
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component/dashboard-component.controller.js +28 -3
- package/dist/dashboard/dashboard-component/dashboard-component.controller.js.map +1 -1
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +22 -1
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component/dashboard-component.service.js +185 -35
- package/dist/dashboard/dashboard-component/dashboard-component.service.js.map +1 -1
- package/dist/dashboard/dashboard-component/dto/create.dto.d.ts +1 -0
- package/dist/dashboard/dashboard-component/dto/create.dto.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component/dto/create.dto.js +5 -0
- package/dist/dashboard/dashboard-component/dto/create.dto.js.map +1 -1
- package/dist/dashboard/dashboard-component/dto/update.dto.d.ts +1 -0
- package/dist/dashboard/dashboard-component/dto/update.dto.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component/dto/update.dto.js +5 -0
- package/dist/dashboard/dashboard-component/dto/update.dto.js.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +1 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +1 -0
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +72 -1
- package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.controller.js +111 -0
- package/dist/dashboard/dashboard-core/dashboard-core.controller.js.map +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +76 -1
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.service.js +614 -23
- package/dist/dashboard/dashboard-core/dashboard-core.service.js.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +3 -0
- package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +3 -0
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +2 -0
- package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts.map +1 -1
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +2 -0
- package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts.map +1 -1
- package/hedhog/data/dashboard.yaml +12 -6
- package/hedhog/data/dashboard_component_role.yaml +66 -0
- package/hedhog/data/dashboard_item.yaml +1 -1
- package/hedhog/data/dashboard_role.yaml +2 -8
- package/hedhog/data/route.yaml +84 -0
- package/hedhog/frontend/app/dashboard/[slug]/dashboard-content.tsx.ejs +457 -135
- package/hedhog/frontend/app/dashboard/[slug]/types.ts.ejs +3 -0
- package/hedhog/frontend/app/dashboard/[slug]/widget-renderer.tsx.ejs +365 -28
- package/hedhog/frontend/app/dashboard/components/add-widget-selector-dialog.tsx.ejs +376 -247
- package/hedhog/frontend/app/dashboard/components/draggable-grid.tsx.ejs +64 -18
- package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +1389 -0
- package/hedhog/frontend/app/dashboard/dashboard.css.ejs +37 -0
- package/hedhog/frontend/app/dashboard/management/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +6 -6
- package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +8 -8
- package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +3 -3
- package/hedhog/frontend/app/dashboard/page.tsx.ejs +3 -25
- package/hedhog/frontend/messages/en.json +115 -2
- package/hedhog/frontend/messages/pt.json +114 -1
- package/hedhog/frontend/public/dashboard-previews/.gitkeep +12 -0
- package/hedhog/frontend/public/dashboard-previews/account-security.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/active-users-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/activity-timeline.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/cash-balance-kpi.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/cash-flow-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/default-kpi.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/email-notifications.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/financial-alerts.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/login-history-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/mail-sent-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/mail-sent-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/menus-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/payable-30d-kpi.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/permissions-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/permissions-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/profile-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/receivable-30d-kpi.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/routes-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/session-activity-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/sessions-today-card.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/stat-access-level.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/stat-actions-today.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/stat-consecutive-days.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/stat-online-time.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/upcoming-payable.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/upcoming-receivable.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/user-growth-chart.png +0 -0
- package/hedhog/frontend/public/dashboard-previews/user-roles.png +0 -0
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/account-security.tsx.ejs +34 -30
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/active-users-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/activity-timeline.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/email-notifications.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/locale-config.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/login-history-chart.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/mail-config.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/mail-sent-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/mail-sent-chart.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/menus-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/oauth-config.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/permissions-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/permissions-chart.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/profile-card.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/routes-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/session-activity-chart.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/sessions-today-card.tsx.ejs +2 -2
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/stat-access-level.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/stat-actions-today.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/stat-consecutive-days.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/stat-online-time.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/storage-config.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/theme-config.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/user-growth-chart.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/user-roles.tsx.ejs +1 -1
- package/hedhog/frontend/{app/dashboard/components/widgets → widgets}/user-sessions.tsx.ejs +2 -2
- package/hedhog/table/dashboard.yaml +6 -0
- package/hedhog/table/dashboard_component.yaml +7 -0
- package/package.json +5 -5
- package/src/dashboard/dashboard-component/dashboard-component.controller.ts +51 -14
- package/src/dashboard/dashboard-component/dashboard-component.service.ts +254 -43
- package/src/dashboard/dashboard-component/dto/create.dto.ts +4 -0
- package/src/dashboard/dashboard-component/dto/update.dto.ts +4 -0
- package/src/dashboard/dashboard-core/dashboard-core.controller.ts +112 -1
- package/src/dashboard/dashboard-core/dashboard-core.service.ts +782 -24
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
.dashboard-tabs-list .dashboard-tab-trigger {
|
|
2
|
+
position: relative;
|
|
3
|
+
border: none !important;
|
|
4
|
+
border-bottom: 0 !important;
|
|
5
|
+
box-shadow: none !important;
|
|
6
|
+
border-radius: 8px 8px 0 0 !important;
|
|
7
|
+
transition:
|
|
8
|
+
background-color 160ms ease,
|
|
9
|
+
color 160ms ease,
|
|
10
|
+
box-shadow 160ms ease;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.dashboard-tabs-list .dashboard-tab-trigger.dashboard-tab-trigger-inactive {
|
|
14
|
+
background: transparent !important;
|
|
15
|
+
color: hsl(var(--muted-foreground) / 0.6) !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dashboard-tabs-list
|
|
19
|
+
.dashboard-tab-trigger.dashboard-tab-trigger-inactive:hover {
|
|
20
|
+
background: hsl(var(--background) / 0.5) !important;
|
|
21
|
+
color: hsl(var(--foreground) / 0.8) !important;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.dashboard-tabs-list .dashboard-tab-trigger.dashboard-tab-trigger-active,
|
|
25
|
+
.dashboard-tabs-list
|
|
26
|
+
.dashboard-tab-trigger.dashboard-tab-trigger-active[data-state='active'] {
|
|
27
|
+
z-index: 10;
|
|
28
|
+
background: hsl(var(--background)) !important;
|
|
29
|
+
color: hsl(var(--primary)) !important;
|
|
30
|
+
border: none !important;
|
|
31
|
+
box-shadow: none !important;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.dashboard-tabs-list .dashboard-tab-trigger.dashboard-tab-trigger-active svg {
|
|
35
|
+
color: hsl(var(--primary)) !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
1
38
|
.dashboard-grid.react-grid-layout {
|
|
2
39
|
position: relative;
|
|
3
40
|
transition: height 200ms ease;
|
|
@@ -278,7 +278,7 @@ export function ComponentsTab() {
|
|
|
278
278
|
setOpen(true);
|
|
279
279
|
} catch (error) {
|
|
280
280
|
console.error('Erro ao carregar componente:', error);
|
|
281
|
-
toast.error('
|
|
281
|
+
toast.error(t('loadComponentError'));
|
|
282
282
|
}
|
|
283
283
|
};
|
|
284
284
|
|
|
@@ -323,7 +323,7 @@ export function ComponentsTab() {
|
|
|
323
323
|
refetch();
|
|
324
324
|
} catch (error) {
|
|
325
325
|
console.error('Erro ao salvar componente:', error);
|
|
326
|
-
toast.error('
|
|
326
|
+
toast.error(t('saveComponentError'));
|
|
327
327
|
}
|
|
328
328
|
};
|
|
329
329
|
|
|
@@ -345,7 +345,7 @@ export function ComponentsTab() {
|
|
|
345
345
|
refetch();
|
|
346
346
|
} catch (error) {
|
|
347
347
|
console.error('Erro ao excluir componente:', error);
|
|
348
|
-
toast.error('
|
|
348
|
+
toast.error(t('deleteComponentError'));
|
|
349
349
|
} finally {
|
|
350
350
|
setDeleteDialogOpen(false);
|
|
351
351
|
setComponentToDelete(null);
|
|
@@ -476,7 +476,7 @@ export function ComponentsTab() {
|
|
|
476
476
|
<Label htmlFor="slug">{t('slug')}</Label>
|
|
477
477
|
<Input
|
|
478
478
|
id="slug"
|
|
479
|
-
placeholder=
|
|
479
|
+
placeholder={t('componentSlugPlaceholder')}
|
|
480
480
|
value={selectedComponent.slug || ''}
|
|
481
481
|
onChange={(e) =>
|
|
482
482
|
setSelectedComponent({
|
|
@@ -491,7 +491,7 @@ export function ComponentsTab() {
|
|
|
491
491
|
<Label htmlFor="name">{t('name')}</Label>
|
|
492
492
|
<Input
|
|
493
493
|
id="name"
|
|
494
|
-
placeholder=
|
|
494
|
+
placeholder={t('componentNamePlaceholder')}
|
|
495
495
|
value={
|
|
496
496
|
selectedComponent.locale?.[selectedLocale]?.name || ''
|
|
497
497
|
}
|
|
@@ -701,7 +701,7 @@ export function ComponentsTab() {
|
|
|
701
701
|
|
|
702
702
|
<div className="flex items-center gap-2 mb-4">
|
|
703
703
|
<Input
|
|
704
|
-
placeholder={
|
|
704
|
+
placeholder={t('searchPlaceholder')}
|
|
705
705
|
value={searchQuery}
|
|
706
706
|
onChange={(e) => {
|
|
707
707
|
setSearchQuery(e.target.value);
|
|
@@ -231,7 +231,7 @@ export function DashboardsTab() {
|
|
|
231
231
|
setOpen(true);
|
|
232
232
|
} catch (error) {
|
|
233
233
|
console.error('Erro ao carregar dashboard:', error);
|
|
234
|
-
toast.error('
|
|
234
|
+
toast.error(t('loadDashboardError'));
|
|
235
235
|
}
|
|
236
236
|
};
|
|
237
237
|
|
|
@@ -265,7 +265,7 @@ export function DashboardsTab() {
|
|
|
265
265
|
refetch();
|
|
266
266
|
} catch (error) {
|
|
267
267
|
console.error('Erro ao salvar dashboard:', error);
|
|
268
|
-
toast.error('
|
|
268
|
+
toast.error(t('saveDashboardError'));
|
|
269
269
|
}
|
|
270
270
|
};
|
|
271
271
|
|
|
@@ -282,11 +282,11 @@ export function DashboardsTab() {
|
|
|
282
282
|
url: `/dashboard/${dashboardToDelete}`,
|
|
283
283
|
method: 'DELETE',
|
|
284
284
|
});
|
|
285
|
-
toast.success(t('
|
|
285
|
+
toast.success(t('dashboardDeleted'));
|
|
286
286
|
refetch();
|
|
287
287
|
} catch (error) {
|
|
288
288
|
console.error('Erro ao excluir dashboard:', error);
|
|
289
|
-
toast.error('
|
|
289
|
+
toast.error(t('deleteDashboardError'));
|
|
290
290
|
} finally {
|
|
291
291
|
setDeleteDialogOpen(false);
|
|
292
292
|
setDashboardToDelete(null);
|
|
@@ -419,7 +419,7 @@ export function DashboardsTab() {
|
|
|
419
419
|
<Label htmlFor="slug">{t('slug')}</Label>
|
|
420
420
|
<Input
|
|
421
421
|
id="slug"
|
|
422
|
-
placeholder=
|
|
422
|
+
placeholder={t('dashboardSlugPlaceholder')}
|
|
423
423
|
value={selectedDashboard.slug || ''}
|
|
424
424
|
onChange={(e) =>
|
|
425
425
|
setSelectedDashboard({
|
|
@@ -433,7 +433,7 @@ export function DashboardsTab() {
|
|
|
433
433
|
<Label htmlFor="name">{t('name')}</Label>
|
|
434
434
|
<Input
|
|
435
435
|
id="name"
|
|
436
|
-
placeholder=
|
|
436
|
+
placeholder={t('dashboardNamePlaceholder')}
|
|
437
437
|
value={
|
|
438
438
|
selectedDashboard.locale?.[selectedLocale]?.name || ''
|
|
439
439
|
}
|
|
@@ -462,7 +462,7 @@ export function DashboardsTab() {
|
|
|
462
462
|
|
|
463
463
|
<div className="flex items-center gap-2 mb-4">
|
|
464
464
|
<Input
|
|
465
|
-
placeholder={
|
|
465
|
+
placeholder={t('searchPlaceholder')}
|
|
466
466
|
value={searchQuery}
|
|
467
467
|
onChange={(e) => {
|
|
468
468
|
setSearchQuery(e.target.value);
|
|
@@ -476,7 +476,7 @@ export function DashboardsTab() {
|
|
|
476
476
|
<Table>
|
|
477
477
|
<TableHeader>
|
|
478
478
|
<TableRow>
|
|
479
|
-
<TableHead>
|
|
479
|
+
<TableHead>{t('id')}</TableHead>
|
|
480
480
|
<TableHead>{t('slug')}</TableHead>
|
|
481
481
|
<TableHead>{t('name')}</TableHead>
|
|
482
482
|
<TableHead>{t('role')}</TableHead>
|
|
@@ -207,7 +207,7 @@ export function ItemsTab() {
|
|
|
207
207
|
refetch();
|
|
208
208
|
} catch (error) {
|
|
209
209
|
console.error('Erro ao adicionar item:', error);
|
|
210
|
-
toast.error('
|
|
210
|
+
toast.error(t('addItemError'));
|
|
211
211
|
}
|
|
212
212
|
};
|
|
213
213
|
|
|
@@ -228,7 +228,7 @@ export function ItemsTab() {
|
|
|
228
228
|
refetch();
|
|
229
229
|
} catch (error) {
|
|
230
230
|
console.error('Erro ao excluir item:', error);
|
|
231
|
-
toast.error('
|
|
231
|
+
toast.error(t('deleteItemError'));
|
|
232
232
|
} finally {
|
|
233
233
|
setDeleteDialogOpen(false);
|
|
234
234
|
setItemToDelete(null);
|
|
@@ -457,7 +457,7 @@ export function ItemsTab() {
|
|
|
457
457
|
<Table>
|
|
458
458
|
<TableHeader>
|
|
459
459
|
<TableRow>
|
|
460
|
-
<TableHead>
|
|
460
|
+
<TableHead>{t('id')}</TableHead>
|
|
461
461
|
<TableHead>{t('dashboard')}</TableHead>
|
|
462
462
|
<TableHead>{t('component')}</TableHead>
|
|
463
463
|
<TableHead className="w-[100px]">{t('actions')}</TableHead>
|
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { useApp, useQuery } from '@hed-hog/next-app-provider';
|
|
5
|
-
import { useRouter } from 'next/navigation';
|
|
6
|
-
import { useEffect } from 'react';
|
|
3
|
+
import { DashboardHomeTabs } from './dashboard-home-tabs';
|
|
7
4
|
|
|
8
|
-
export default function
|
|
9
|
-
|
|
10
|
-
const { request, currentLocaleCode } = useApp();
|
|
11
|
-
|
|
12
|
-
const { data: dashboardData, isLoading } = useQuery<Dashboard | null>({
|
|
13
|
-
queryKey: ['dashboard-home-redirect', currentLocaleCode],
|
|
14
|
-
queryFn: async () => {
|
|
15
|
-
const response = await request<Dashboard>({
|
|
16
|
-
url: '/dashboard-core/home',
|
|
17
|
-
});
|
|
18
|
-
return response.data ?? null;
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (isLoading) return;
|
|
24
|
-
|
|
25
|
-
router.replace(`/core/dashboard/${dashboardData?.slug ?? 'default'}`);
|
|
26
|
-
}, [dashboardData?.slug, isLoading, router]);
|
|
27
|
-
|
|
28
|
-
return null;
|
|
5
|
+
export default function DashboardPage() {
|
|
6
|
+
return <DashboardHomeTabs />;
|
|
29
7
|
}
|
|
@@ -904,13 +904,95 @@
|
|
|
904
904
|
"AddWidgetDialog": {
|
|
905
905
|
"title": "Select Dashboard Components",
|
|
906
906
|
"description": "Choose the components you want to display on your dashboard.",
|
|
907
|
+
"selectedOfTotal": "{selected} selected of {total}",
|
|
908
|
+
"search": "Search",
|
|
909
|
+
"searchPlaceholder": "Type the widget name, slug, or module",
|
|
910
|
+
"module": "Module",
|
|
911
|
+
"moduleFilterLabel": "Filter by module",
|
|
912
|
+
"allModules": "All modules",
|
|
907
913
|
"noComponentsAvailable": "No components available at the moment.",
|
|
908
914
|
"dimensions": "Dimensions",
|
|
909
915
|
"resizable": "Resizable",
|
|
910
916
|
"fixedSize": "Fixed size",
|
|
917
|
+
"select": "Select",
|
|
918
|
+
"selected": "Selected",
|
|
911
919
|
"cancel": "Cancel",
|
|
912
920
|
"add": "Add"
|
|
913
921
|
},
|
|
922
|
+
"DashboardHomeTabs": {
|
|
923
|
+
"share": "Share",
|
|
924
|
+
"newDashboard": "New dashboard",
|
|
925
|
+
"pageTitle": "Dashboards",
|
|
926
|
+
"pageDescription": "Use compact tabs to switch between dashboards, create new views, and share them with other people who can edit the layout and widgets.",
|
|
927
|
+
"enterDashboardName": "Enter a name for the dashboard.",
|
|
928
|
+
"enterValidLucideIcon": "Enter a valid Lucide icon.",
|
|
929
|
+
"dashboardCreated": "Dashboard created successfully.",
|
|
930
|
+
"createDashboardError": "Could not create the dashboard.",
|
|
931
|
+
"setAsHomeSuccess": "Dashboard set as home.",
|
|
932
|
+
"updateHomeError": "Could not update the home dashboard.",
|
|
933
|
+
"dashboardRenamed": "Dashboard renamed successfully.",
|
|
934
|
+
"renameDashboardError": "Could not rename the dashboard.",
|
|
935
|
+
"dashboardIconUpdated": "Dashboard icon updated successfully.",
|
|
936
|
+
"updateDashboardIconError": "Could not update the dashboard icon.",
|
|
937
|
+
"tabRemoved": "The tab was removed from your home.",
|
|
938
|
+
"removeTabError": "Could not remove the tab.",
|
|
939
|
+
"dashboardShared": "Dashboard shared successfully.",
|
|
940
|
+
"shareDashboardError": "Could not share the dashboard.",
|
|
941
|
+
"shareRemoved": "Sharing removed.",
|
|
942
|
+
"revokeShareError": "Could not remove the sharing.",
|
|
943
|
+
"addWidgets": "Add widgets",
|
|
944
|
+
"setAsHome": "Set as home",
|
|
945
|
+
"rename": "Rename",
|
|
946
|
+
"changeIcon": "Change icon",
|
|
947
|
+
"delete": "Delete",
|
|
948
|
+
"emptyTitle": "No dashboards available.",
|
|
949
|
+
"emptyDescription": "Create the first tab to start organizing your home.",
|
|
950
|
+
"createToStart": "Create a dashboard to get started.",
|
|
951
|
+
"newDashboardTitle": "New dashboard",
|
|
952
|
+
"newDashboardDescription": "Create a new custom tab for your home. The slug will be generated automatically.",
|
|
953
|
+
"dashboardTemplateLabel": "Start from",
|
|
954
|
+
"templateSelectedBadge": "Template",
|
|
955
|
+
"blankDashboardBadge": "Blank",
|
|
956
|
+
"blankDashboardTitle": "Blank dashboard",
|
|
957
|
+
"blankDashboardDescription": "Start with an empty layout and add widgets manually.",
|
|
958
|
+
"templateWidgetCount": "{count} widgets",
|
|
959
|
+
"noTemplatesAvailable": "No templates are available for your roles right now.",
|
|
960
|
+
"dashboardNameLabel": "Dashboard name",
|
|
961
|
+
"dashboardNamePlaceholder": "E.g. Sales, Operations, KPIs",
|
|
962
|
+
"dashboardIconLabel": "Dashboard icon",
|
|
963
|
+
"dashboardIconPlaceholder": "E.g. layout-dashboard, chart-line, wallet",
|
|
964
|
+
"invalidIconName": "The entered name does not match a Lucide icon.",
|
|
965
|
+
"selectIconHint": "When you select an option below, the name will be filled in automatically.",
|
|
966
|
+
"iconSuggestions": "Icon suggestions",
|
|
967
|
+
"createDashboard": "Create dashboard",
|
|
968
|
+
"changeDashboardIconTitle": "Change dashboard icon",
|
|
969
|
+
"changeDashboardIconDescription": "Choose a Lucide option or type the icon name using the site pattern, such as layout-dashboard.",
|
|
970
|
+
"iconNameLabel": "Icon name",
|
|
971
|
+
"iconNamePlaceholder": "E.g. layout-dashboard, briefcase, users",
|
|
972
|
+
"noCustomIcon": "No custom icon",
|
|
973
|
+
"dashboardLabel": "Dashboard",
|
|
974
|
+
"suggestions": "Suggestions",
|
|
975
|
+
"saveIcon": "Save icon",
|
|
976
|
+
"shareDashboardTitle": "Share {name}",
|
|
977
|
+
"shareDashboardDescription": "Shared users can edit the layout and widgets of this dashboard.",
|
|
978
|
+
"searchUser": "Search user",
|
|
979
|
+
"searchUserPlaceholder": "Type a name or email",
|
|
980
|
+
"usersWithAccess": "With access",
|
|
981
|
+
"usersWithAccessDescription": "People who can already open and edit this dashboard.",
|
|
982
|
+
"noSharedUsers": "There are no shared users yet.",
|
|
983
|
+
"you": "You",
|
|
984
|
+
"home": "Home",
|
|
985
|
+
"noPublicEmail": "No public email",
|
|
986
|
+
"addPeople": "Add people",
|
|
987
|
+
"addPeopleDescription": "Share with users who do not have access yet.",
|
|
988
|
+
"noUsersToShare": "No users found to share.",
|
|
989
|
+
"add": "Add",
|
|
990
|
+
"cancel": "Cancel",
|
|
991
|
+
"removeTabTitle": "Remove this tab from your home?",
|
|
992
|
+
"removeTabDescription": "The “{name}” tab will be removed only from your list.",
|
|
993
|
+
"removeTabDescriptionFallback": "This action only removes the tab from your list.",
|
|
994
|
+
"removeTab": "Remove tab"
|
|
995
|
+
},
|
|
914
996
|
"DashboardMenu": {
|
|
915
997
|
"addWidgets": "Add Widgets",
|
|
916
998
|
"switchDashboard": "Switch Dashboard",
|
|
@@ -1118,6 +1200,23 @@
|
|
|
1118
1200
|
"notSet": "Not set"
|
|
1119
1201
|
}
|
|
1120
1202
|
},
|
|
1203
|
+
"WidgetRenderer": {
|
|
1204
|
+
"saveWidgetPreview": "Save widget preview",
|
|
1205
|
+
"generatingWidgetScreenshot": "Generating widget screenshot",
|
|
1206
|
+
"generateWidgetScreenshot": "Generate widget screenshot",
|
|
1207
|
+
"generateScreenshotError": "Could not generate the widget screenshot.",
|
|
1208
|
+
"generateAgainToDownload": "Generate the screenshot again to download the image.",
|
|
1209
|
+
"generateAgainToShare": "Generate the screenshot again to share the image.",
|
|
1210
|
+
"shareNotSupported": "Sharing is not supported in this browser.",
|
|
1211
|
+
"shareText": "Widget screenshot {name}",
|
|
1212
|
+
"shareImageError": "Could not share the image.",
|
|
1213
|
+
"screenshotTitle": "Widget screenshot",
|
|
1214
|
+
"screenshotDescription": "Share or download the generated image for this component.",
|
|
1215
|
+
"screenshotAlt": "Widget screenshot {name}",
|
|
1216
|
+
"sharing": "Sharing...",
|
|
1217
|
+
"share": "Share",
|
|
1218
|
+
"downloadImage": "Download image"
|
|
1219
|
+
},
|
|
1121
1220
|
"HomePage": {
|
|
1122
1221
|
"buildingYourApplication": "Building Your Application",
|
|
1123
1222
|
"dataFetching": "Data Fetching"
|
|
@@ -1242,7 +1341,7 @@
|
|
|
1242
1341
|
"manageDashboards": "Manage system dashboards",
|
|
1243
1342
|
"selectDashboardRequired": "Select a dashboard",
|
|
1244
1343
|
"selectComponentRequired": "Select a component",
|
|
1245
|
-
"
|
|
1344
|
+
"manageComponentRoles": "Manage access permissions to components",
|
|
1246
1345
|
"addRole": "Add Permission",
|
|
1247
1346
|
"selectRole": "Select a permission",
|
|
1248
1347
|
"selectRoleRequired": "Select a permission",
|
|
@@ -1256,7 +1355,21 @@
|
|
|
1256
1355
|
"errorDeletingRole": "Error deleting permission",
|
|
1257
1356
|
"dashboardRolesTab": "Dashboard Permissions",
|
|
1258
1357
|
"manageDashboardRoles": "Manage access permissions to dashboards",
|
|
1259
|
-
"selectDashboardAndRole": "Select the dashboard and permission"
|
|
1358
|
+
"selectDashboardAndRole": "Select the dashboard and permission",
|
|
1359
|
+
"homeBreadcrumb": "Home",
|
|
1360
|
+
"id": "ID",
|
|
1361
|
+
"loadDashboardError": "Error loading dashboard",
|
|
1362
|
+
"saveDashboardError": "Error saving dashboard",
|
|
1363
|
+
"deleteDashboardError": "Error deleting dashboard",
|
|
1364
|
+
"dashboardSlugPlaceholder": "admin-dashboard",
|
|
1365
|
+
"dashboardNamePlaceholder": "Admin Dashboard",
|
|
1366
|
+
"loadComponentError": "Error loading component",
|
|
1367
|
+
"saveComponentError": "Error saving component",
|
|
1368
|
+
"deleteComponentError": "Error deleting component",
|
|
1369
|
+
"componentSlugPlaceholder": "total-users",
|
|
1370
|
+
"componentNamePlaceholder": "Total Users",
|
|
1371
|
+
"addItemError": "Error adding item",
|
|
1372
|
+
"deleteItemError": "Error deleting item"
|
|
1260
1373
|
},
|
|
1261
1374
|
"ForbiddenDialog": {
|
|
1262
1375
|
"title": "Access Denied",
|
|
@@ -907,13 +907,95 @@
|
|
|
907
907
|
"AddWidgetDialog": {
|
|
908
908
|
"title": "Selecionar Componentes do Dashboard",
|
|
909
909
|
"description": "Escolha os componentes que deseja exibir no seu dashboard.",
|
|
910
|
+
"selectedOfTotal": "{selected} selecionados de {total}",
|
|
911
|
+
"search": "Buscar",
|
|
912
|
+
"searchPlaceholder": "Digite o nome, slug ou módulo do widget",
|
|
913
|
+
"module": "Módulo",
|
|
914
|
+
"moduleFilterLabel": "Filtrar por módulo",
|
|
915
|
+
"allModules": "Todos os módulos",
|
|
910
916
|
"noComponentsAvailable": "Nenhum componente disponível no momento.",
|
|
911
917
|
"dimensions": "Dimensões",
|
|
912
918
|
"resizable": "Redimensionável",
|
|
913
919
|
"fixedSize": "Tamanho fixo",
|
|
920
|
+
"select": "Selecionar",
|
|
921
|
+
"selected": "Selecionado",
|
|
914
922
|
"cancel": "Cancelar",
|
|
915
923
|
"add": "Adicionar"
|
|
916
924
|
},
|
|
925
|
+
"DashboardHomeTabs": {
|
|
926
|
+
"share": "Compartilhar",
|
|
927
|
+
"newDashboard": "Novo dashboard",
|
|
928
|
+
"pageTitle": "Dashboards",
|
|
929
|
+
"pageDescription": "Use abas compactas para alternar entre dashboards, criar novas visões e compartilhar com outras pessoas que podem editar layout e widgets.",
|
|
930
|
+
"enterDashboardName": "Informe um nome para o dashboard.",
|
|
931
|
+
"enterValidLucideIcon": "Informe um ícone válido do Lucide.",
|
|
932
|
+
"dashboardCreated": "Dashboard criado com sucesso.",
|
|
933
|
+
"createDashboardError": "Não foi possível criar o dashboard.",
|
|
934
|
+
"setAsHomeSuccess": "Dashboard definido como home.",
|
|
935
|
+
"updateHomeError": "Não foi possível atualizar a home.",
|
|
936
|
+
"dashboardRenamed": "Dashboard renomeado com sucesso.",
|
|
937
|
+
"renameDashboardError": "Não foi possível renomear o dashboard.",
|
|
938
|
+
"dashboardIconUpdated": "Ícone do dashboard atualizado com sucesso.",
|
|
939
|
+
"updateDashboardIconError": "Não foi possível atualizar o ícone do dashboard.",
|
|
940
|
+
"tabRemoved": "A aba foi removida da sua home.",
|
|
941
|
+
"removeTabError": "Não foi possível remover a aba.",
|
|
942
|
+
"dashboardShared": "Dashboard compartilhado com sucesso.",
|
|
943
|
+
"shareDashboardError": "Não foi possível compartilhar o dashboard.",
|
|
944
|
+
"shareRemoved": "Compartilhamento removido.",
|
|
945
|
+
"revokeShareError": "Não foi possível remover o compartilhamento.",
|
|
946
|
+
"addWidgets": "Adicionar widgets",
|
|
947
|
+
"setAsHome": "Definir como home",
|
|
948
|
+
"rename": "Renomear",
|
|
949
|
+
"changeIcon": "Trocar ícone",
|
|
950
|
+
"delete": "Excluir",
|
|
951
|
+
"emptyTitle": "Nenhum dashboard disponível.",
|
|
952
|
+
"emptyDescription": "Crie a primeira aba para começar a organizar sua home.",
|
|
953
|
+
"createToStart": "Crie um dashboard para começar.",
|
|
954
|
+
"newDashboardTitle": "Novo dashboard",
|
|
955
|
+
"newDashboardDescription": "Crie uma nova aba personalizada para sua home. O slug será gerado automaticamente.",
|
|
956
|
+
"dashboardTemplateLabel": "Começar de",
|
|
957
|
+
"templateSelectedBadge": "Template",
|
|
958
|
+
"blankDashboardBadge": "Em branco",
|
|
959
|
+
"blankDashboardTitle": "Dashboard em branco",
|
|
960
|
+
"blankDashboardDescription": "Comece com um layout vazio e adicione os widgets manualmente.",
|
|
961
|
+
"templateWidgetCount": "{count} widgets",
|
|
962
|
+
"noTemplatesAvailable": "Nenhum template está disponível para os seus perfis no momento.",
|
|
963
|
+
"dashboardNameLabel": "Nome do dashboard",
|
|
964
|
+
"dashboardNamePlaceholder": "Ex.: Comercial, Operações, Indicadores",
|
|
965
|
+
"dashboardIconLabel": "Ícone do dashboard",
|
|
966
|
+
"dashboardIconPlaceholder": "Ex.: layout-dashboard, chart-line, wallet",
|
|
967
|
+
"invalidIconName": "O nome informado não corresponde a um ícone do Lucide.",
|
|
968
|
+
"selectIconHint": "Ao selecionar uma opção abaixo, o nome será preenchido automaticamente.",
|
|
969
|
+
"iconSuggestions": "Sugestões de ícones",
|
|
970
|
+
"createDashboard": "Criar dashboard",
|
|
971
|
+
"changeDashboardIconTitle": "Trocar ícone do dashboard",
|
|
972
|
+
"changeDashboardIconDescription": "Escolha uma opção do Lucide ou digite o nome do ícone no padrão do site, como layout-dashboard.",
|
|
973
|
+
"iconNameLabel": "Nome do ícone",
|
|
974
|
+
"iconNamePlaceholder": "Ex.: layout-dashboard, briefcase, users",
|
|
975
|
+
"noCustomIcon": "Sem ícone personalizado",
|
|
976
|
+
"dashboardLabel": "Dashboard",
|
|
977
|
+
"suggestions": "Sugestões",
|
|
978
|
+
"saveIcon": "Salvar ícone",
|
|
979
|
+
"shareDashboardTitle": "Compartilhar {name}",
|
|
980
|
+
"shareDashboardDescription": "Usuários compartilhados podem editar o layout e os widgets deste dashboard.",
|
|
981
|
+
"searchUser": "Buscar usuário",
|
|
982
|
+
"searchUserPlaceholder": "Digite um nome ou e-mail",
|
|
983
|
+
"usersWithAccess": "Com acesso",
|
|
984
|
+
"usersWithAccessDescription": "Quem já pode abrir e editar este dashboard.",
|
|
985
|
+
"noSharedUsers": "Ainda não há usuários compartilhados.",
|
|
986
|
+
"you": "Você",
|
|
987
|
+
"home": "Home",
|
|
988
|
+
"noPublicEmail": "Sem e-mail público",
|
|
989
|
+
"addPeople": "Adicionar pessoas",
|
|
990
|
+
"addPeopleDescription": "Compartilhe com usuários que ainda não possuem acesso.",
|
|
991
|
+
"noUsersToShare": "Nenhum usuário encontrado para compartilhar.",
|
|
992
|
+
"add": "Adicionar",
|
|
993
|
+
"cancel": "Cancelar",
|
|
994
|
+
"removeTabTitle": "Remover aba da sua home?",
|
|
995
|
+
"removeTabDescription": "A aba “{name}” será removida apenas da sua lista.",
|
|
996
|
+
"removeTabDescriptionFallback": "Essa ação remove a aba apenas da sua lista.",
|
|
997
|
+
"removeTab": "Remover aba"
|
|
998
|
+
},
|
|
917
999
|
"DashboardMenu": {
|
|
918
1000
|
"addWidgets": "Adicionar Widgets",
|
|
919
1001
|
"switchDashboard": "Trocar Dashboard",
|
|
@@ -1123,6 +1205,23 @@
|
|
|
1123
1205
|
"notSet": "Não definido"
|
|
1124
1206
|
}
|
|
1125
1207
|
},
|
|
1208
|
+
"WidgetRenderer": {
|
|
1209
|
+
"saveWidgetPreview": "Salvar preview do widget",
|
|
1210
|
+
"generatingWidgetScreenshot": "Gerando print do widget",
|
|
1211
|
+
"generateWidgetScreenshot": "Gerar print do widget",
|
|
1212
|
+
"generateScreenshotError": "Não foi possível gerar o print do widget.",
|
|
1213
|
+
"generateAgainToDownload": "Gere o print novamente para baixar a imagem.",
|
|
1214
|
+
"generateAgainToShare": "Gere o print novamente para compartilhar a imagem.",
|
|
1215
|
+
"shareNotSupported": "O compartilhamento não é suportado neste navegador.",
|
|
1216
|
+
"shareText": "Print do widget {name}",
|
|
1217
|
+
"shareImageError": "Não foi possível compartilhar a imagem.",
|
|
1218
|
+
"screenshotTitle": "Print do widget",
|
|
1219
|
+
"screenshotDescription": "Compartilhe ou baixe a imagem gerada deste componente.",
|
|
1220
|
+
"screenshotAlt": "Print do widget {name}",
|
|
1221
|
+
"sharing": "Compartilhando...",
|
|
1222
|
+
"share": "Compartilhar",
|
|
1223
|
+
"downloadImage": "Baixar imagem"
|
|
1224
|
+
},
|
|
1126
1225
|
"HomePage": {
|
|
1127
1226
|
"buildingYourApplication": "Construindo Sua Aplicação",
|
|
1128
1227
|
"dataFetching": "Busca de Dados"
|
|
@@ -1261,7 +1360,21 @@
|
|
|
1261
1360
|
"errorDeletingRole": "Erro ao excluir permissão",
|
|
1262
1361
|
"dashboardRolesTab": "Permissões de Dashboard",
|
|
1263
1362
|
"manageDashboardRoles": "Gerencie as permissões de acesso aos dashboards",
|
|
1264
|
-
"selectDashboardAndRole": "Selecione o dashboard e a permissão"
|
|
1363
|
+
"selectDashboardAndRole": "Selecione o dashboard e a permissão",
|
|
1364
|
+
"homeBreadcrumb": "Home",
|
|
1365
|
+
"id": "ID",
|
|
1366
|
+
"loadDashboardError": "Erro ao carregar dashboard",
|
|
1367
|
+
"saveDashboardError": "Erro ao salvar dashboard",
|
|
1368
|
+
"deleteDashboardError": "Erro ao excluir dashboard",
|
|
1369
|
+
"dashboardSlugPlaceholder": "admin-dashboard",
|
|
1370
|
+
"dashboardNamePlaceholder": "Dashboard Admin",
|
|
1371
|
+
"loadComponentError": "Erro ao carregar componente",
|
|
1372
|
+
"saveComponentError": "Erro ao salvar componente",
|
|
1373
|
+
"deleteComponentError": "Erro ao excluir componente",
|
|
1374
|
+
"componentSlugPlaceholder": "total-users",
|
|
1375
|
+
"componentNamePlaceholder": "Total de Usuários",
|
|
1376
|
+
"addItemError": "Erro ao adicionar item",
|
|
1377
|
+
"deleteItemError": "Erro ao excluir item"
|
|
1265
1378
|
},
|
|
1266
1379
|
"DashboardComponent": {
|
|
1267
1380
|
"title": "Componentes do Dashboard",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Dashboard Widget Previews
|
|
2
|
+
#
|
|
3
|
+
# Place one .webp file per dashboard component, named exactly by the component slug.
|
|
4
|
+
# Example: active-users-card.webp, user-sessions.webp
|
|
5
|
+
#
|
|
6
|
+
# These files are copied by `hedhog add` / `hedhog dev apply` to:
|
|
7
|
+
# apps/admin/public/libraries/core/dashboard-previews/<slug>.webp
|
|
8
|
+
#
|
|
9
|
+
# The admin selector loads them as:
|
|
10
|
+
# /libraries/core/dashboard-previews/<slug>.webp
|
|
11
|
+
#
|
|
12
|
+
# If a file is missing, the selector card falls back gracefully (image hidden).
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|