code: nextjs,frontends,tsx (269 files)

This commit is contained in:
Richard Ward
2025-12-30 20:10:09 +00:00
parent 2f1c10a1fd
commit 5003c2cf2a
269 changed files with 587 additions and 545 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
import { expect, test, Page } from '@playwright/test';
import { expect, Page,test } from '@playwright/test';
// Helper function to navigate to login page
async function navigateToLogin(page: Page) {
+1 -1
View File
@@ -1,4 +1,4 @@
import { expect, test, Page } from '@playwright/test';
import { expect, Page,test } from '@playwright/test';
// Helper function to navigate to login page
async function navigateToLogin(page: Page) {
+3 -2
View File
@@ -87,8 +87,9 @@ const nextConfig: NextConfig = {
...config.resolve.alias,
'@/dbal': path.resolve(__dirname, '../../dbal/development/src'),
'@dbal-ui': path.resolve(__dirname, '../../dbal/shared/ui'),
'@/core/foundation/errors': path.resolve(__dirname, '../../dbal/development/src/core/foundation/errors.ts'),
}
// Ignore optional AWS SDK on client side
if (!isServer) {
config.resolve.fallback = {
@@ -96,7 +97,7 @@ const nextConfig: NextConfig = {
'@aws-sdk/client-s3': false,
}
}
return config
},
}
@@ -1,5 +1,5 @@
import { NextResponse } from 'next/server'
import { readFile } from 'fs/promises'
import { NextResponse } from 'next/server'
import { join } from 'path'
/**
@@ -1,5 +1,7 @@
'use client'
import { type ChangeEvent, useMemo, useState } from 'react'
import {
Alert,
Box,
@@ -12,7 +14,6 @@ import {
TextField,
Typography,
} from '@/fakemui'
import { type ChangeEvent, useMemo, useState } from 'react'
import Header from './components/Header'
import Sidebar from './components/Sidebar'
@@ -1,7 +1,6 @@
'use client'
import { Paper, Stack, Typography } from '@/fakemui'
import type { CodegenManifest } from '@/lib/codegen/codegen-types'
interface SidebarProps {
@@ -1,8 +1,9 @@
'use client'
import { Container, Stack, Typography } from '@/fakemui'
import { useMemo, useState } from 'react'
import { Container, Stack, Typography } from '@/fakemui'
import { LevelDetails } from './components/LevelDetails'
import { LevelsGrid } from './components/LevelsGrid'
import { PERMISSION_LEVELS } from './levels-data'
@@ -1,9 +1,10 @@
'use client'
import { CssBaseline } from '@/fakemui'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { useEffect, useMemo, useState } from 'react'
import { CssBaseline } from '@/fakemui'
import { ThemeContext, type ThemeMode } from './theme-context'
export function Providers({ children }: { children: React.ReactNode }) {
@@ -1,8 +1,9 @@
import { Metadata } from 'next'
import { notFound } from 'next/navigation'
import { UIPageRenderer } from '@/components/ui-page-renderer/UIPageRenderer'
import { loadPageFromLuaPackages } from '@/lib/ui-pages/load-page-from-lua-packages'
import { loadPageFromDB } from '@/lib/ui-pages/load-page-from-db'
import { loadPageFromLuaPackages } from '@/lib/ui-pages/load-page-from-lua-packages'
interface PageProps {
params: Promise<{
@@ -1,7 +1,8 @@
'use client'
import { Button as FakemuiButton } from '@/fakemui'
import { forwardRef } from 'react'
import { Button as FakemuiButton } from '@/fakemui'
import type { ButtonProps as FakemuiButtonProps } from '@/fakemui/fakemui/inputs/Button'
/** Button visual style variants */
@@ -1,8 +1,9 @@
'use client'
import { Checkbox as FakemuiCheckbox } from '@/fakemui'
import { forwardRef } from 'react'
import { Checkbox as FakemuiCheckbox } from '@/fakemui'
/**
* Props for the Checkbox component
* Wrapper around fakemui Checkbox to maintain API compatibility
@@ -1,8 +1,9 @@
'use client'
import { Radio as FakemuiRadio } from '@/fakemui'
import { forwardRef } from 'react'
import { Radio as FakemuiRadio } from '@/fakemui'
/**
* Props for the Radio component
* Wrapper around fakemui Radio to maintain API compatibility
@@ -1,8 +1,9 @@
'use client'
import { Switch as FakemuiSwitch } from '@/fakemui'
import { forwardRef } from 'react'
import { Switch as FakemuiSwitch } from '@/fakemui'
/**
* Props for the Switch component
* Wrapper around fakemui Switch to maintain API compatibility
@@ -1,8 +1,9 @@
'use client'
import { Avatar as FakemuiAvatar, AvatarGroup as FakemuiAvatarGroup } from '@/fakemui'
import { forwardRef } from 'react'
import { Avatar as FakemuiAvatar, AvatarGroup as FakemuiAvatarGroup } from '@/fakemui'
/** Avatar size options */
export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
@@ -1,8 +1,9 @@
'use client'
import { Chip } from '@/fakemui'
import { forwardRef } from 'react'
import { Chip } from '@/fakemui'
/** Badge visual style variants */
export type BadgeVariant =
| 'default'
@@ -1,8 +1,9 @@
'use client'
import * as FakeMuiIcons from '@/fakemui/icons'
import { CSSProperties, forwardRef } from 'react'
import * as FakeMuiIcons from '@/fakemui/icons'
// Create a type from the available fakemui icons
export type IconName = keyof typeof FakeMuiIcons
export type IconSize = 'small' | 'medium' | 'large' | 'inherit'
@@ -1,8 +1,9 @@
'use client'
import { IconButton as FakemuiIconButton } from '@/fakemui'
import { forwardRef } from 'react'
import { IconButton as FakemuiIconButton } from '@/fakemui'
/** IconButton size options */
export type IconButtonSize = 'small' | 'medium' | 'large'
@@ -1,8 +1,9 @@
'use client'
import { Label as FakemuiLabel } from '@/fakemui'
import { forwardRef, LabelHTMLAttributes } from 'react'
import { Label as FakemuiLabel } from '@/fakemui'
/**
* Props for the Label component
* Wrapper around fakemui Label to maintain API compatibility
@@ -1,9 +1,10 @@
'use client'
import { Link as FakemuiLink } from '@/fakemui'
import NextLink, { LinkProps as NextLinkProps } from 'next/link'
import { forwardRef } from 'react'
import { Link as FakemuiLink } from '@/fakemui'
/**
* Props for the Link component
* Wrapper around fakemui Link with Next.js integration
@@ -1,8 +1,9 @@
'use client'
import { Text as FakemuiText, Typography } from '@/fakemui'
import { forwardRef } from 'react'
import { Text as FakemuiText, Typography } from '@/fakemui'
export type TextVariant =
| 'h1'
| 'h2'
@@ -1,8 +1,8 @@
'use client'
import { Alert, Button, Typography } from '@/fakemui'
import React, { Component, ReactNode } from 'react'
import { Alert, Button, Typography } from '@/fakemui'
import { logError, LogLevel } from '@/lib/errors/log-error'
interface Props {
@@ -1,8 +1,9 @@
'use client'
import { LinearProgress, CircularProgress } from '@/fakemui'
import { forwardRef } from 'react'
import { CircularProgress,LinearProgress } from '@/fakemui'
/**
* Props for the Progress component
* Wrapper around fakemui LinearProgress to maintain API compatibility
@@ -1,8 +1,9 @@
'use client'
import { Divider } from '@/fakemui'
import { forwardRef } from 'react'
import { Divider } from '@/fakemui'
/**
* Props for the Separator component
* Wrapper around fakemui Divider to maintain API compatibility
@@ -1,7 +1,8 @@
'use client'
import { Skeleton as FakemuiSkeleton } from '@/fakemui'
import { forwardRef } from 'react'
import { Skeleton as FakemuiSkeleton } from '@/fakemui'
import type { SkeletonProps as FakemuiSkeletonProps } from '@/fakemui/fakemui/feedback/Skeleton'
/**
@@ -1,8 +1,9 @@
'use client'
import { CircularProgress } from '@/fakemui'
import { forwardRef } from 'react'
import { CircularProgress } from '@/fakemui'
/** Spinner size options */
export type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg'
@@ -1,8 +1,9 @@
'use client'
import { Tooltip as FakemuiTooltip } from '@/fakemui'
import { forwardRef, ReactElement, ReactNode } from 'react'
import { Tooltip as FakemuiTooltip } from '@/fakemui'
/**
* Props for the Tooltip component
* Wrapper around fakemui Tooltip to maintain API compatibility
@@ -1,7 +1,8 @@
'use client'
import { Input as FakemuiInput } from '@/fakemui'
import { forwardRef } from 'react'
import { Input as FakemuiInput } from '@/fakemui'
import type { InputProps as FakemuiInputProps } from '@/fakemui/fakemui/inputs/Input'
/**
@@ -1,8 +1,9 @@
'use client'
import { Select as FakemuiSelect } from '@/fakemui'
import { forwardRef } from 'react'
import { Select as FakemuiSelect } from '@/fakemui'
export interface SelectOption {
value: string | number
label: string
@@ -1,8 +1,9 @@
'use client'
import { Textarea } from '@/fakemui'
import { forwardRef } from 'react'
import { Textarea } from '@/fakemui'
/**
* Props for the TextArea component
* Wrapper around fakemui Textarea to maintain API compatibility
@@ -1,5 +1,4 @@
import { Button, Stack, Typography } from '@/fakemui'
import { LockRounded } from '@/fakemui/icons'
interface AccessDeniedProps {
@@ -1,9 +1,9 @@
'use client'
import { CircularProgress, Stack, Typography } from '@/fakemui'
import { useRouter } from 'next/navigation'
import { useEffect } from 'react'
import { CircularProgress, Stack, Typography } from '@/fakemui'
import { useAuth } from '@/hooks/useAuth'
import { getRoleLevel } from '@/lib/auth/get-role-level'
import { resolveAccessDecision } from '@/lib/auth/resolve-access-decision'
@@ -1,6 +1,5 @@
import { CheckCircle, WarningCircle } from '@/fakemui/icons'
import { Alert, AlertDescription, Badge } from '@/components/ui'
import { CheckCircle, WarningCircle } from '@/fakemui/icons'
export interface GodCredentialsSummaryProps {
isActive: boolean
@@ -1,6 +1,5 @@
import { SignIn } from '@/fakemui/icons'
import { Alert, AlertDescription, Button, Input, Label } from '@/components/ui'
import { SignIn } from '@/fakemui/icons'
export interface LoginFormProps {
username: string
@@ -1,6 +1,5 @@
import { GithubLogo, GoogleLogo, type IconProps } from '@/fakemui/icons'
import { Button, Separator } from '@/components/ui'
import { GithubLogo, GoogleLogo, type IconProps } from '@/fakemui/icons'
export interface Provider {
name: string
@@ -1,4 +1,3 @@
import { Eye, EyeSlash, Warning } from '@/fakemui/icons'
import { useState } from 'react'
import {
@@ -13,6 +12,7 @@ import { Button } from '@/components/ui'
import { Input } from '@/components/ui'
import { Label } from '@/components/ui'
import { Alert, AlertDescription } from '@/components/ui'
import { Eye, EyeSlash, Warning } from '@/fakemui/icons'
interface PasswordChangeDialogProps {
open: boolean
@@ -1,5 +1,4 @@
import Editor from '@monaco-editor/react'
import { FloppyDisk, ShieldCheck, Warning, X } from '@/fakemui/icons'
import { useState } from 'react'
import { toast } from 'sonner'
@@ -13,6 +12,7 @@ import {
} from '@/components/ui'
import { Button } from '@/components/ui'
import { Alert, AlertDescription } from '@/components/ui'
import { FloppyDisk, ShieldCheck, Warning, X } from '@/fakemui/icons'
import { securityScanner, type SecurityScanResult } from '@/lib/security-scanner'
interface CodeEditorProps {
@@ -1,5 +1,4 @@
import Editor from '@monaco-editor/react'
import { Warning } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -12,6 +11,7 @@ import {
DialogHeader,
DialogTitle,
} from '@/components/ui'
import { Warning } from '@/fakemui/icons'
import { securityScanner, type SecurityScanResult } from '@/lib/security-scanner'
import type { JsonValue } from '@/types/utility-types'
@@ -1,5 +1,3 @@
import { useKV } from '@/hooks/data/useKV'
import { ArrowCounterClockwise, FloppyDisk, Moon, Palette, Sun } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -7,6 +5,8 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
import { Button } from '@/components/ui'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui'
import { Switch } from '@/components/ui'
import { ArrowCounterClockwise, FloppyDisk, Moon, Palette, Sun } from '@/fakemui/icons'
import { useKV } from '@/hooks/data/useKV'
import { DEFAULT_DARK_THEME, DEFAULT_LIGHT_THEME } from './theme/constants'
import { PaletteEditor } from './theme/PaletteEditor'
@@ -1,6 +1,5 @@
import { FloppyDisk, ShieldCheck, X } from '@/fakemui/icons'
import { Button, DialogFooter } from '@/components/ui'
import { FloppyDisk, ShieldCheck, X } from '@/fakemui/icons'
interface ToolbarProps {
onScan: () => void
@@ -1,16 +1,16 @@
import type { MouseEvent } from 'react'
import {
Box,
Button,
Card,
CardContent,
CardHeader,
Plus as AddIcon,
Stack,
TextField,
Typography,
Plus as AddIcon,
} from '@/fakemui'
import type { MouseEvent } from 'react'
import type { LuaScript } from '@/lib/level-types'
import { BlockList } from './blocks/BlockList'
@@ -1,16 +1,15 @@
import {
ArrowClockwise as RefreshIcon,
Box,
Button,
Card,
CardContent,
CardHeader,
Copy as ContentCopy,
FloppyDisk as SaveIcon,
Stack,
Tooltip,
Copy as ContentCopy,
ArrowClockwise as RefreshIcon,
FloppyDisk as SaveIcon,
} from '@/fakemui'
import type { LuaScript } from '@/lib/level-types'
import styles from './LuaBlocksEditor.module.scss'
@@ -10,13 +10,12 @@ import {
ListItemButton,
ListItemText,
Paper,
Plus as AddIcon,
Stack,
Tooltip,
Typography,
Plus as AddIcon,
Trash as DeleteIcon,
Typography,
} from '@/fakemui'
import type { LuaScript } from '@/lib/level-types'
import { BlockListView } from './BlockListView'
@@ -1,6 +1,5 @@
import { Play, ShieldCheck } from '@/fakemui/icons'
import { Button, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Play, ShieldCheck } from '@/fakemui/icons'
interface LuaEditorToolbarProps {
scriptName: string
@@ -1,8 +1,8 @@
import { BookOpen } from '@/fakemui/icons'
import { useMemo, useState } from 'react'
import { toast } from 'sonner'
import { Tabs } from '@/components/ui'
import { BookOpen } from '@/fakemui/icons'
import { getSnippetsByCategory, type LuaSnippet, searchSnippets } from '@/lib/lua-snippets'
import { SearchBar } from './LuaSnippetLibrary/SearchBar'
@@ -1,6 +1,5 @@
import { MagnifyingGlass } from '@/fakemui/icons'
import { Input, ScrollArea, TabsList, TabsTrigger } from '@/components/ui'
import { MagnifyingGlass } from '@/fakemui/icons'
import { LUA_SNIPPET_CATEGORIES } from '@/lib/lua-snippets'
interface SearchBarProps {
@@ -1,5 +1,3 @@
import { ArrowRight, Check, Code, Copy, Tag } from '@/fakemui/icons'
import {
Badge,
Button,
@@ -10,6 +8,7 @@ import {
DialogTitle,
Separator,
} from '@/components/ui'
import { ArrowRight, Check, Code, Copy, Tag } from '@/fakemui/icons'
import { type LuaSnippet } from '@/lib/lua-snippets'
interface SnippetDialogProps {
@@ -1,5 +1,3 @@
import { ArrowRight, Check, Code, Copy, Tag } from '@/fakemui/icons'
import {
Badge,
Button,
@@ -10,6 +8,7 @@ import {
CardTitle,
TabsContent,
} from '@/components/ui'
import { ArrowRight, Check, Code, Copy, Tag } from '@/fakemui/icons'
import { LUA_SNIPPET_CATEGORIES, type LuaSnippet } from '@/lib/lua-snippets'
interface SnippetListProps {
@@ -1,14 +1,15 @@
import type { MouseEvent } from 'react'
import {
Box,
IconButton,
Tooltip,
Typography,
ArrowDown as ArrowDownward,
ArrowUp as ArrowUpward,
Box,
Copy as ContentCopy,
IconButton,
Tooltip,
Trash as DeleteIcon,
Typography,
} from '@/fakemui'
import type { MouseEvent } from 'react'
import styles from '../LuaBlocksEditor.module.scss'
import type { BlockDefinition, BlockSlot, LuaBlock } from '../types'
@@ -1,6 +1,7 @@
import { Box } from '@/fakemui'
import type { MouseEvent } from 'react'
import { Box } from '@/fakemui'
import styles from '../LuaBlocksEditor.module.scss'
import type { BlockDefinition, BlockSlot, LuaBlock, LuaBlockType } from '../types'
import { BlockItem } from './BlockItem'
@@ -1,6 +1,7 @@
import { Box, Button, Typography, Plus as AddIcon } from '@/fakemui'
import type { MouseEvent } from 'react'
import { Box, Button, Plus as AddIcon,Typography } from '@/fakemui'
import styles from '../LuaBlocksEditor.module.scss'
import type { BlockSlot, LuaBlock } from '../types'
@@ -1,5 +1,5 @@
import Editor, { useMonaco } from '@monaco-editor/react'
import { ArrowsOut, BookOpen, FileCode } from '@/fakemui/icons'
import type { editor } from 'monaco-editor'
import { useRef } from 'react'
import { toast } from 'sonner'
@@ -15,10 +15,10 @@ import {
SheetTitle,
SheetTrigger,
} from '@/components/ui'
import { ArrowsOut, BookOpen, FileCode } from '@/fakemui/icons'
import type { LuaScript } from '@/lib/level-types'
import { getLuaExampleCode, getLuaExamplesList } from '@/lib/lua-examples'
import type { LuaExampleKey } from '@/lib/lua-examples'
import type { editor } from 'monaco-editor'
import { getLuaExampleCode, getLuaExamplesList } from '@/lib/lua-examples'
import { useLuaMonacoConfig } from './useLuaMonacoConfig'
@@ -1,6 +1,5 @@
import { Plus, Trash } from '@/fakemui/icons'
import { Badge, Button, CardContent, Input, Label } from '@/components/ui'
import { Plus, Trash } from '@/fakemui/icons'
import type { LuaScript } from '@/lib/level-types'
import type { JsonValue } from '@/types/utility-types'
@@ -1,6 +1,5 @@
import { Plus, Trash } from '@/fakemui/icons'
import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Plus, Trash } from '@/fakemui/icons'
import type { LuaScript } from '@/lib/level-types'
interface LuaScriptsListCardProps {
@@ -1,6 +1,5 @@
import { CheckCircle, XCircle } from '@/fakemui/icons'
import { Card, CardContent, CardHeader, CardTitle, Label } from '@/components/ui'
import { CheckCircle, XCircle } from '@/fakemui/icons'
import type { LuaExecutionResult } from '@/lib/lua-engine'
interface LuaExecutionPreviewProps {
@@ -1,6 +1,5 @@
import { Play, ShieldCheck } from '@/fakemui/icons'
import { Button, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Play, ShieldCheck } from '@/fakemui/icons'
import type { LuaScript } from '@/lib/level-types'
interface LuaEditorToolbarProps {
@@ -1,10 +1,10 @@
import Editor from '@monaco-editor/react'
import { FloppyDisk, Warning, X } from '@/fakemui/icons'
import { useState } from 'react'
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui'
import { Button } from '@/components/ui'
import { Alert, AlertDescription } from '@/components/ui'
import { FloppyDisk, Warning, X } from '@/fakemui/icons'
import type { SchemaConfig } from '@/lib/schema-types'
interface SchemaEditorProps {
@@ -1,9 +1,8 @@
import { Plus, Trash } from '@/fakemui/icons'
import { SchemaTabs } from '@/components/schema/level4/Tabs'
import { useSchemaLevel4 } from '@/components/schema/level4/useSchemaLevel4'
import { Button } from '@/components/ui'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Plus, Trash } from '@/fakemui/icons'
import type { ModelSchema } from '@/lib/schema-types'
interface SchemaEditorLevel4Props {
@@ -1,3 +1,5 @@
import type { ComponentType, ReactElement } from 'react'
import {
AccountCircle,
Article,
@@ -8,6 +10,7 @@ import {
CropPortrait,
FormatAlignLeft,
GridView,
type IconProps,
LocalOffer,
LooksOne,
Minus,
@@ -20,9 +23,7 @@ import {
ViewColumn,
ViewStream,
WarningAmber,
type IconProps,
} from '@/fakemui/icons'
import type { ComponentType, ReactElement } from 'react'
const iconMap: Record<string, ComponentType<IconProps>> = {
Article,
@@ -2,9 +2,9 @@
import { useEffect, useState } from 'react'
import { GodCredentialsBanner } from '@/components/level1/GodCredentialsBanner'
import { getScrambledPassword } from '@/lib/auth'
import { GodCredentialsBanner } from '@/components/level1/GodCredentialsBanner'
import { ChallengePanel } from '../sections/ChallengePanel'
export function CredentialsSection() {
@@ -1,4 +1,3 @@
import { Trash } from '@/fakemui/icons'
import { useMemo } from 'react'
import {
@@ -10,6 +9,7 @@ import {
TableHeader,
TableRow,
} from '@/components/ui'
import { Trash } from '@/fakemui/icons'
import type { Comment, User } from '@/lib/level-types'
import { ChallengePanel } from '../sections/ChallengePanel'
@@ -1,6 +1,5 @@
import { ChatCircle, Users } from '@/fakemui/icons'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui'
import { ChatCircle, Users } from '@/fakemui/icons'
import type { Comment, User } from '@/lib/level-types'
interface Level3StatsProps {
@@ -1,4 +1,3 @@
import { ChatCircle, MagnifyingGlass, PencilSimple, Trash, Users } from '@/fakemui/icons'
import { useMemo } from 'react'
import {
@@ -12,6 +11,7 @@ import {
TableHeader,
TableRow,
} from '@/components/ui'
import { ChatCircle, MagnifyingGlass, PencilSimple, Trash, Users } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
import { ChallengePanel } from '../sections/ChallengePanel'
@@ -1,7 +1,6 @@
import { ArrowsLeftRight, Buildings, Camera, Eye, Users, Warning } from '@/fakemui/icons'
import { Box, Typography } from '@/fakemui'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui'
import { Box, Typography } from '@/fakemui'
import { ArrowsLeftRight, Buildings, Camera, Eye, Users, Warning } from '@/fakemui/icons'
import type { AppLevel, Tenant, User } from '@/lib/level-types'
import { ErrorLogsTab } from '../../level5/tabs/error-logs/ErrorLogsTab'
@@ -1,5 +1,3 @@
import { Crown } from '@/fakemui/icons'
import {
AlertDialog,
AlertDialogAction,
@@ -10,6 +8,7 @@ import {
AlertDialogHeader,
AlertDialogTitle,
} from '@/components/ui'
import { Crown } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
interface TransferConfirmDialogProps {
@@ -1,8 +1,7 @@
'use client'
import { ChatCircle, User } from '@/fakemui/icons'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui'
import { ChatCircle, User } from '@/fakemui/icons'
import type { User as UserType } from '@/lib/level-types'
import { AppHeader } from '../../shared/AppHeader'
@@ -1,10 +1,10 @@
'use client'
import { ChatCircle, Users } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui'
import { ChatCircle, Users } from '@/fakemui/icons'
import { deleteComment, getComments } from '@/lib/db/comments'
import { deleteUser, getUsers, updateUser } from '@/lib/db/users'
import type { Comment, User as UserType } from '@/lib/level-types'
@@ -1,7 +1,7 @@
import { useKV } from '@/hooks/data/useKV'
import { useCallback, useEffect, useState } from 'react'
import { toast } from 'sonner'
import { useKV } from '@/hooks/data/useKV'
import { Database } from '@/lib/database'
import type { AppConfiguration } from '@/lib/level-types'
import { seedDatabase } from '@/lib/seed-data'
@@ -1,7 +1,7 @@
import { useKV } from '@/hooks/data/useKV'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
import { useKV } from '@/hooks/data/useKV'
import { createPowerTransferRequest } from '@/lib/api/power-transfers'
import { fetchUsers } from '@/lib/api/users/fetch-users'
import { Database } from '@/lib/database'
@@ -1,7 +1,6 @@
import { Check, Copy, Eye, EyeSlash, Warning } from '@/fakemui/icons'
import { Alert, AlertDescription } from '@/components/ui'
import { Button } from '@/components/ui'
import { Check, Copy, Eye, EyeSlash, Warning } from '@/fakemui/icons'
interface GodCredentialsBannerProps {
username: string
@@ -1,7 +1,7 @@
import { List, ShieldCheck, User, X } from '@/fakemui/icons'
import Link from 'next/link'
import { Button } from '@/components/ui'
import { List, ShieldCheck, User, X } from '@/fakemui/icons'
interface NavigationBarProps {
menuOpen: boolean
@@ -1,8 +1,7 @@
import { Trash } from '@/fakemui/icons'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Button } from '@/components/ui'
import { Avatar, AvatarFallback } from '@/components/ui'
import { Trash } from '@/fakemui/icons'
import type { Comment, User } from '@/lib/level-types'
interface CommentsListProps {
@@ -1,11 +1,10 @@
import { Envelope } from '@/fakemui/icons'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Button } from '@/components/ui'
import { Avatar, AvatarFallback } from '@/components/ui'
import { Input } from '@/components/ui'
import { Label } from '@/components/ui'
import { Textarea } from '@/components/ui'
import { Envelope } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
interface ProfileCardProps {
@@ -1,5 +1,3 @@
import { Download, Eye, House, SignOut, Terminal, Upload } from '@/fakemui/icons'
import { Button } from '@/components/ui'
import { Badge } from '@/components/ui'
import {
@@ -8,6 +6,7 @@ import {
DropdownMenuItem,
DropdownMenuTrigger,
} from '@/components/ui'
import { Download, Eye, House, SignOut, Terminal, Upload } from '@/fakemui/icons'
interface Level4HeaderProps {
username: string
@@ -1,7 +1,6 @@
import { Crown, SignOut, Terminal } from '@/fakemui/icons'
import { Button } from '@/components/ui'
import { Badge } from '@/components/ui'
import { Crown, SignOut, Terminal } from '@/fakemui/icons'
interface Level5HeaderProps {
username: string
@@ -1,8 +1,7 @@
import { Shield, Users } from '@/fakemui/icons'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { ScrollArea } from '@/components/ui'
import { Badge } from '@/components/ui'
import { Shield, Users } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
interface GodUsersTabProps {
@@ -1,6 +1,5 @@
'use client'
import { ArrowsLeftRight, Crown } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { Button } from '@/components/ui'
@@ -9,6 +8,7 @@ import { ScrollArea } from '@/components/ui'
import { Badge } from '@/components/ui'
import { Separator } from '@/components/ui'
import { Alert, AlertDescription } from '@/components/ui'
import { ArrowsLeftRight, Crown } from '@/fakemui/icons'
import { fetchPowerTransferRequests } from '@/lib/api/power-transfers'
import type { PowerTransferRequest, User } from '@/lib/level-types'
@@ -1,7 +1,6 @@
import { Eye } from '@/fakemui/icons'
import { Button } from '@/components/ui'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Eye } from '@/fakemui/icons'
interface PreviewTabProps {
onPreview: (level: number) => void
@@ -1,9 +1,8 @@
import { Buildings, House } from '@/fakemui/icons'
import { Button } from '@/components/ui'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { ScrollArea } from '@/components/ui'
import { Badge } from '@/components/ui'
import { Buildings, House } from '@/fakemui/icons'
import type { Tenant, User } from '@/lib/level-types'
interface TenantsTabProps {
@@ -1,5 +1,3 @@
import { Warning } from '@/fakemui/icons'
import {
AlertDialog,
AlertDialogAction,
@@ -10,6 +8,7 @@ import {
AlertDialogHeader,
AlertDialogTitle,
} from '@/components/ui'
import { Warning } from '@/fakemui/icons'
interface ClearLogsDialogProps {
open: boolean
@@ -1,5 +1,3 @@
import { Broom } from '@/fakemui/icons'
import {
Badge,
Button,
@@ -11,6 +9,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui'
import { Broom } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
import type { ErrorLevelFilter, ResolutionFilter } from './useErrorLogFilters'
@@ -1,6 +1,5 @@
import { CheckCircle, Info, Trash, Warning } from '@/fakemui/icons'
import { Badge, Button, Card, CardContent, ScrollArea } from '@/components/ui'
import { CheckCircle, Info, Trash, Warning } from '@/fakemui/icons'
import type { ErrorLog } from '@/lib/db/error-logs'
import type { User } from '@/lib/level-types'
@@ -1,6 +1,5 @@
import { Warning } from '@/fakemui/icons'
import { Button, Card, CardContent } from '@/components/ui'
import { Warning } from '@/fakemui/icons'
interface ErrorLogsErrorStateProps {
message: string
@@ -1,6 +1,4 @@
'use client'
import { Broom, Warning } from '@/fakemui/icons'
import {
AlertDialog,
AlertDialogAction,
@@ -22,6 +20,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui'
import { Broom, Warning } from '@/fakemui/icons'
import type { User } from '@/lib/level-types'
import { ErrorLogTable } from './modules/ErrorLogTable'
@@ -1,6 +1,5 @@
import { CheckCircle, Trash } from '@/fakemui/icons'
import { Badge, Button, Card, CardContent, ScrollArea } from '@/components/ui'
import { CheckCircle, Trash } from '@/fakemui/icons'
import type { ErrorLog } from '@/lib/db/error-logs'
import { formatLogContext } from '../helpers/context'
@@ -1,6 +1,5 @@
'use client'
import { ArrowsLeftRight } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import {
@@ -12,6 +11,7 @@ import {
CardTitle,
Separator,
} from '@/components/ui'
import { ArrowsLeftRight } from '@/fakemui/icons'
import { fetchPowerTransferRequests } from '@/lib/api/power-transfers'
import type { PowerTransferRequest, User } from '@/lib/level-types'
@@ -1,7 +1,5 @@
'use client'
import { Crown } from '@/fakemui/icons'
import {
Alert,
AlertDescription,
@@ -13,6 +11,7 @@ import {
CardTitle,
ScrollArea,
} from '@/components/ui'
import { Crown } from '@/fakemui/icons'
import type { PowerTransferRequest, User } from '@/lib/level-types'
const STATUS_VARIANTS: Record<
@@ -1,8 +1,8 @@
import { Plus } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
import { Button, Card } from '@/components/ui'
import { Plus } from '@/fakemui/icons'
import type { DropdownConfig } from '@/lib/database'
import { Database } from '@/lib/database'
@@ -1,4 +1,3 @@
import { Plus } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -16,6 +15,7 @@ import {
DialogTitle,
DialogTrigger,
} from '@/components/ui'
import { Plus } from '@/fakemui/icons'
import { Database } from '@/lib/database'
import type { PageConfig } from '@/lib/level-types'
@@ -1,6 +1,5 @@
'use client'
import { Pencil, Plus, Trash, UserCircle } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -22,6 +21,7 @@ import {
DialogTrigger,
} from '@/components/ui'
import { Avatar, AvatarFallback } from '@/components/ui'
import { Pencil, Plus, Trash, UserCircle } from '@/fakemui/icons'
import { createUser, deleteUser, listUsers, updateUser } from '@/lib/api/users'
import type { User, UserRole } from '@/lib/level-types'
@@ -1,9 +1,8 @@
import { useState } from 'react'
import { getComponentIcon } from '@/components/get-component-icon'
import { Box, Card, Stack, TextField, Typography } from '@/fakemui'
import { Search } from '@/fakemui/icons'
import { getComponentIcon } from '@/components/get-component-icon'
import type { ComponentDefinition } from '@/lib/builder-types'
import { componentCatalog } from '@/lib/component-catalog'
@@ -1,4 +1,3 @@
import { ArrowsOutCardinal, Plus, Tree } from '@/fakemui/icons'
import { useCallback, useId, useMemo, useState } from 'react'
import { toast } from 'sonner'
@@ -7,6 +6,7 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui'
import { ScrollArea } from '@/components/ui'
import { Separator } from '@/components/ui'
import { ArrowsOutCardinal, Plus, Tree } from '@/fakemui/icons'
import { componentCatalog } from '@/lib/components/component-catalog'
import { type ComponentNode, Database } from '@/lib/database'
@@ -1,6 +1,6 @@
import { Cursor } from '@/fakemui/icons'
import type React from 'react'
import { Cursor } from '@/fakemui/icons'
import type { ComponentNode } from '@/lib/database'
import { TreeNode } from '../modules/TreeNode'
@@ -1,7 +1,7 @@
import { CaretDown, CaretRight, GearSix, Trash, Tree } from '@/fakemui/icons'
import type React from 'react'
import { Badge, Button } from '@/components/ui'
import { CaretDown, CaretRight, GearSix, Trash, Tree } from '@/fakemui/icons'
import { componentCatalog } from '@/lib/components/component-catalog'
import type { ComponentNode } from '@/lib/database'
@@ -1,10 +1,9 @@
import { FloppyDisk, X } from '@/fakemui/icons'
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui'
import { Badge } from '@/components/ui'
import { Button } from '@/components/ui'
import { Input } from '@/components/ui'
import { Label } from '@/components/ui'
import { FloppyDisk, X } from '@/fakemui/icons'
import { useClassBuilderState } from './class-builder/hooks'
import { Preview } from './class-builder/Preview'
@@ -1,4 +1,3 @@
import { FloppyDisk, Pencil, Plus, Trash, X } from '@/fakemui/icons'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -10,6 +9,7 @@ import { Badge } from '@/components/ui'
import { ScrollArea } from '@/components/ui'
import { Separator } from '@/components/ui'
import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui'
import { FloppyDisk, Pencil, Plus, Trash, X } from '@/fakemui/icons'
import { CssCategory, Database } from '@/lib/database'
// eslint-disable-next-line no-useless-escape
@@ -1,5 +1,3 @@
import { Plus } from '@/fakemui/icons'
import {
Button,
Input,
@@ -9,6 +7,7 @@ import {
TabsList,
TabsTrigger,
} from '@/components/ui'
import { Plus } from '@/fakemui/icons'
import type { CssCategory } from '@/lib/database'
interface RuleEditorProps {
@@ -1,6 +1,5 @@
import { ArrowsClockwise, Export, Trash, UploadSimple } from '@/fakemui/icons'
import { Button } from '@/components/ui'
import { ArrowsClockwise, Export, Trash, UploadSimple } from '@/fakemui/icons'
interface ActionToolbarProps {
isLoading?: boolean
@@ -1,3 +1,7 @@
import { useCallback, useEffect, useMemo, useState } from 'react'
import { toast } from 'sonner'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import {
ChatCircle,
Code,
@@ -10,10 +14,6 @@ import {
Tree,
Users,
} from '@/fakemui/icons'
import { useCallback, useEffect, useMemo, useState } from 'react'
import { toast } from 'sonner'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui'
import { Database, DB_KEYS } from '@/lib/database'
import type { ModelSchema } from '@/lib/types/schema-types'
@@ -1,4 +1,3 @@
import { FloppyDisk, Plus, X } from '@/fakemui/icons'
import { useEffect, useMemo, useState } from 'react'
import { toast } from 'sonner'
@@ -15,6 +14,7 @@ import {
ScrollArea,
Separator,
} from '@/components/ui'
import { FloppyDisk, Plus, X } from '@/fakemui/icons'
import type { DropdownConfig } from '@/lib/database'
interface DropdownConfigFormProps {
@@ -1,6 +1,5 @@
import { Pencil, Trash } from '@/fakemui/icons'
import { Badge, Button, Card, Separator } from '@/components/ui'
import { Pencil, Trash } from '@/fakemui/icons'
import type { DropdownConfig } from '@/lib/database'
interface PreviewPaneProps {

Some files were not shown because too many files have changed in this diff Show More