Compare commits

...

3 Commits

Author SHA1 Message Date
Flatlogic Bot
7f6ac081a9 Autosave: 20260312-110155 2026-03-12 11:01:56 +00:00
Flatlogic Bot
adcbb26cbf Auto commit: 2026-03-12T07:37:03.246Z 2026-03-12 07:37:03 +00:00
Flatlogic Bot
bfdf88c0b0 Auto commit: 2026-03-11T16:01:47.479Z 2026-03-11 16:01:47 +00:00
14 changed files with 41 additions and 172 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

1
braces.txt Normal file
View File

@ -0,0 +1 @@
{{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -3,10 +3,9 @@ import { mdiLogout, mdiClose } from '@mdi/js'
import BaseIcon from './BaseIcon' import BaseIcon from './BaseIcon'
import AsideMenuList from './AsideMenuList' import AsideMenuList from './AsideMenuList'
import { MenuAsideItem } from '../interfaces' import { MenuAsideItem } from '../interfaces'
import { useAppSelector } from '../stores/hooks' import { useAppSelector , useAppDispatch } from '../stores/hooks'
import Link from 'next/link'; import Link from 'next/link';
import { useAppDispatch } from '../stores/hooks';
import { createAsyncThunk } from '@reduxjs/toolkit'; import { createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios'; import axios from 'axios';
@ -58,7 +57,7 @@ export default function AsideMenuLayer({ menu, className = '', ...props }: Props
return ( return (
<aside <aside
id='asideMenu' id='asideMenu'
className={`${className} zzz lg:py-2 lg:pl-2 w-60 fixed flex z-40 top-0 h-screen transition-position overflow-hidden`} className={`${className} zzz lg:py-2 lg:pl-2 w-60 fixed flex z-40 top-0 h-screen transition-position overflow-hidden lg:relative lg:translate-x-0 translate-x-0`}
> >
<div <div
className={`flex-1 flex flex-col overflow-hidden dark:bg-dark-900 ${asideStyle} ${corners}`} className={`flex-1 flex flex-col overflow-hidden dark:bg-dark-900 ${asideStyle} ${corners}`}

View File

@ -11,7 +11,7 @@ type Props = {
}; };
const BaseButtons = ({ const BaseButtons = ({
type = 'justify-end', type = 'justify-start md:justify-end',
mb = '-mb-3', mb = '-mb-3',
classAddon = 'mr-3 last:mr-0 mb-3', classAddon = 'mr-3 last:mr-0 mb-3',
noWrap = false, noWrap = false,

View File

@ -1,6 +1,5 @@
import React, {useEffect, useRef} from 'react' import React, {useEffect, useRef, useState } from 'react'
import Link from 'next/link' import Link from 'next/link'
import { useState } from 'react'
import { mdiChevronUp, mdiChevronDown } from '@mdi/js' import { mdiChevronUp, mdiChevronDown } from '@mdi/js'
import BaseDivider from './BaseDivider' import BaseDivider from './BaseDivider'
import BaseIcon from './BaseIcon' import BaseIcon from './BaseIcon'

View File

@ -4,12 +4,11 @@
} }
thead { thead {
@apply hidden lg:table-header-group; @apply hidden md:table-header-group;
} }
tr { tr {
@apply max-w-full block relative border-b-4 border-gray-100 @apply max-w-full block relative border-b-4 border-gray-100 md:table-row md:border-b-0 dark:border-slate-800;
lg:table-row lg:border-b-0 dark:border-slate-800;
} }
tr:last-child { tr:last-child {
@ -17,11 +16,11 @@
} }
td:not(:first-child) { td:not(:first-child) {
@apply lg:border-l lg:border-t-0 lg:border-r-0 lg:border-b-0 lg:border-gray-100 lg:dark:border-slate-700; @apply md:border-l md:border-t-0 md:border-r-0 md:border-b-0 md:border-gray-100 md:dark:border-slate-700;
} }
th { th {
@apply lg:text-left lg:p-3 border-b; @apply md:text-left md:p-3 border-b;
} }
th.sortable { th.sortable {
@ -31,80 +30,76 @@
th.sortable:hover:after { th.sortable:hover:after {
transition: all 1s; transition: all 1s;
position: absolute; position: absolute;
content: "↕"; content: "↕";
margin-left: 1rem; margin-left: 1rem;
} }
th.sortable.asc:hover:after { th.sortable.asc:hover:after {
content: "↑"; content: "↑";
} }
th.sortable.desc:hover:after { th.sortable.desc:hover:after {
content: "↓"; content: "↓";
} }
td { td {
@apply flex justify-between text-right py-3 px-4 align-top border-b border-gray-100 @apply flex justify-between text-right py-3 px-4 align-top border-b border-gray-100 md:table-cell md:text-left md:p-3 md:align-middle md:border-b-0 dark:border-slate-800 dark:text-white;
lg:table-cell lg:text-left lg:p-3 lg:align-middle lg:border-b-0 dark:border-slate-800 dark:text-white;
} }
td:last-child { td:last-child {
@apply border-b-0; @apply border-b-0;
} }
tbody tr, tbody tr:nth-child(odd) { tbody tr.odd {
@apply lg:hover:bg-pavitra-300/70; @apply md:hover:bg-pavitra-300/70;
} }
tbody tr:nth-child(even) { tbody tr.even {
@apply lg:bg-pavitra-300 dark:bg-pavitra-300/70; @apply md:bg-pavitra-300 dark:bg-pavitra-300/70;
} }
td:before { td:before {
content: attr(data-label); content: attr(data-label);
@apply font-semibold pr-3 text-left lg:hidden; @apply font-semibold pr-3 text-left md:hidden;
} }
tbody tr td { tbody tr td {
@apply text-sm font-normal text-pavitra-900 dark:text-white; @apply text-sm font-normal text-pavitra-900 dark:text-white;
} }
.datagrid--table, .MuiDataGrid-root { .datagrid--table, .MuiDataGrid-root {
@apply rounded border-none !important; @apply rounded border-none !important;
} }
.datagrid--header { .datagrid--header {
@apply uppercase !important; @apply uppercase !important;
} }
.datagrid--header, .datagrid--header,
.datagrid--header .MuiIconButton-root, .datagrid--header .MuiIconButton-root,
.datagrid--cell, .datagrid--cell,
.datagrid--cell .MuiIconButton-root { .datagrid--cell .MuiIconButton-root {
@apply dark:text-white; @apply dark:text-white;
} }
.datagrid--cell .MuiDataGrid-booleanCell { .datagrid--cell .MuiDataGrid-booleanCell {
@apply dark:text-white !important; @apply dark:text-white !important;
} }
.datagrid--cell .MuiIconButton-root:hover { .datagrid--cell .MuiIconButton-root:hover {
@apply dark:text-white dark:bg-dark-700; @apply dark:text-white dark:bg-dark-700;
} }
.datagrid--row { .datagrid--row {
@apply even:bg-gray-100 dark:even:bg-[#1B1D22] dark:odd:bg-dark-900 !important; @apply even:bg-gray-100 dark:even:bg-[#1B1D22] dark:odd:bg-dark-900 !important;
} }
.datagrid--table .MuiTablePagination-root { .datagrid--table .MuiTablePagination-root {
@apply dark:text-white; @apply dark:text-white;
} }
.datagrid--table .MuiTablePagination-root .MuiButtonBase-root:disabled { .datagrid--table .MuiTablePagination-root .MuiButtonBase-root:disabled {
@apply dark:text-dark-700; @apply dark:text-dark-700;
} }
.datagrid--table .MuiTablePagination-root .MuiButtonBase-root:hover { .datagrid--table .MuiTablePagination-root .MuiButtonBase-root:hover {
@ -112,6 +107,6 @@
} }
.MuiButton-colorInherit { .MuiButton-colorInherit {
@apply text-blue-600 dark:text-dark-700 !important; @apply text-blue-600 dark:text-dark-700 !important;
} }
} }

View File

@ -1,5 +1,4 @@
import React, { ReactNode, useEffect } from 'react' import React, { ReactNode, useEffect , useState } from 'react'
import { useState } from 'react'
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { mdiForwardburger, mdiBackburger, mdiMenu } from '@mdi/js' import { mdiForwardburger, mdiBackburger, mdiMenu } from '@mdi/js'
import menuAside from '../menuAside' import menuAside from '../menuAside'

View File

@ -7,158 +7,35 @@ const menuAside: MenuAsideItem[] = [
icon: icon.mdiViewDashboardOutline, icon: icon.mdiViewDashboardOutline,
label: 'Dashboard', label: 'Dashboard',
}, },
{ {
href: '/users/users-list', href: '/mind_maps/mind_maps-list',
label: 'Users', label: 'Mind maps',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment icon: icon.mdiSitemap,
// @ts-ignore permissions: 'READ_MIND_MAPS'
icon: icon.mdiAccountGroup ?? icon.mdiTable,
permissions: 'READ_USERS'
}, },
{ {
href: '/roles/roles-list', href: '/source_items/source_items-list',
label: 'Roles', label: 'Sources',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment icon: icon.mdiLinkVariant,
// @ts-ignore permissions: 'READ_SOURCE_ITEMS'
icon: icon.mdiShieldAccountVariantOutline ?? icon.mdiTable,
permissions: 'READ_ROLES'
},
{
href: '/permissions/permissions-list',
label: 'Permissions',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: icon.mdiShieldAccountOutline ?? icon.mdiTable,
permissions: 'READ_PERMISSIONS'
},
{
href: '/organizations/organizations-list',
label: 'Organizations',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_ORGANIZATIONS'
},
{
href: '/workspaces/workspaces-list',
label: 'Workspaces',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiDomain' in icon ? icon['mdiDomain' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_WORKSPACES'
},
{
href: '/workspace_memberships/workspace_memberships-list',
label: 'Workspace memberships',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiAccountMultiple' in icon ? icon['mdiAccountMultiple' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_WORKSPACE_MEMBERSHIPS'
}, },
{ {
href: '/projects/projects-list', href: '/projects/projects-list',
label: 'Projects', label: 'Projects',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment icon: icon.mdiBriefcaseOutline,
// @ts-ignore
icon: 'mdiBriefcaseOutline' in icon ? icon['mdiBriefcaseOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_PROJECTS' permissions: 'READ_PROJECTS'
}, },
{ {
href: '/mind_maps/mind_maps-list', href: '/users/users-list',
label: 'Mind maps', label: 'Users',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment icon: icon.mdiAccountGroup,
// @ts-ignore permissions: 'READ_USERS'
icon: 'mdiSitemap' in icon ? icon['mdiSitemap' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_MIND_MAPS'
},
{
href: '/map_nodes/map_nodes-list',
label: 'Map nodes',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiVectorCircle' in icon ? icon['mdiVectorCircle' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_MAP_NODES'
},
{
href: '/map_edges/map_edges-list',
label: 'Map edges',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiVectorLine' in icon ? icon['mdiVectorLine' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_MAP_EDGES'
},
{
href: '/source_items/source_items-list',
label: 'Source items',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiLinkVariant' in icon ? icon['mdiLinkVariant' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_SOURCE_ITEMS'
},
{
href: '/node_evidence_items/node_evidence_items-list',
label: 'Node evidence items',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiBookOpenVariant' in icon ? icon['mdiBookOpenVariant' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_NODE_EVIDENCE_ITEMS'
},
{
href: '/ai_runs/ai_runs-list',
label: 'Ai runs',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiRobot' in icon ? icon['mdiRobot' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_AI_RUNS'
},
{
href: '/business_plan_versions/business_plan_versions-list',
label: 'Business plan versions',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiFileDocumentEditOutline' in icon ? icon['mdiFileDocumentEditOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_BUSINESS_PLAN_VERSIONS'
},
{
href: '/pitch_decks/pitch_decks-list',
label: 'Pitch decks',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiPresentation' in icon ? icon['mdiPresentation' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_PITCH_DECKS'
},
{
href: '/deal_packages/deal_packages-list',
label: 'Deal packages',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiHandshakeOutline' in icon ? icon['mdiHandshakeOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_DEAL_PACKAGES'
},
{
href: '/partner_targets/partner_targets-list',
label: 'Partner targets',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiAccountSearchOutline' in icon ? icon['mdiAccountSearchOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_PARTNER_TARGETS'
},
{
href: '/tasks/tasks-list',
label: 'Tasks',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: 'mdiCheckboxMarkedCircleOutline' in icon ? icon['mdiCheckboxMarkedCircleOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_TASKS'
}, },
{ {
href: '/profile', href: '/profile',
label: 'Profile', label: 'Profile',
icon: icon.mdiAccountCircle, icon: icon.mdiAccountCircle,
}, },
{ {
href: '/api-docs', href: '/api-docs',
target: '_blank', target: '_blank',

View File

@ -1,9 +1,8 @@
import React, { ReactElement, useEffect, useState } from 'react'; import React, { ReactElement, useEffect, useState } from 'react';
import Head from 'next/head'; import Head from 'next/head';
import 'react-datepicker/dist/react-datepicker.css'; import 'react-datepicker/dist/react-datepicker.css';
import { useAppDispatch } from '../stores/hooks'; import { useAppDispatch , useAppSelector } from '../stores/hooks';
import { useAppSelector } from '../stores/hooks';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import LayoutAuthenticated from '../layouts/Authenticated'; import LayoutAuthenticated from '../layouts/Authenticated';