Frontend first draft

This commit is contained in:
Arseni
2025-11-13 15:06:15 +03:00
parent e47f343afb
commit ddb54ddfdc
504 changed files with 25498 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class DashboardTile extends StatelessWidget {
const DashboardTile({super.key});
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.dashboard),
title: Text(AppLocalizations.of(context)!.dashboard),
onTap: () => navigate(context, Pages.dashboard),
);
}
}

View File

@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/provider/account.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class LogoutTile extends StatelessWidget {
const LogoutTile({
super.key,
});
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.logout),
title: Text(AppLocalizations.of(context)!.navigationLogout),
onTap: () => _logout(context),
);
}
void _logout(BuildContext context) {
Navigator.pop(context);
final accountProvider = Provider.of<AccountProvider>(context, listen: false);
accountProvider.logout();
navigateAndReplace(context, Pages.login);
}
}

View File

@@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class PermissionsSettingsTile extends StatelessWidget {
const PermissionsSettingsTile({
super.key,
});
@override
Widget build(BuildContext context) => ListTile(
leading: const Icon(Icons.vpn_key),
title: Text(AppLocalizations.of(context)!.navigationPermissionsSettings),
onTap: () {// ToDo: account settings
},
);
}

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class ProfileSettingsTile extends StatelessWidget {
const ProfileSettingsTile({
super.key,
});
@override
Widget build(BuildContext context) => ListTile(
leading: const Icon(Icons.settings),
title: Text(AppLocalizations.of(context)!.navigationAccountSettings),
onTap: () => navigateNamed(context, Pages.profile),
);
}

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class RolesSettingsTile extends StatelessWidget {
const RolesSettingsTile({
super.key,
});
@override
Widget build(BuildContext context) => ListTile(
leading: const Icon(Icons.manage_accounts),
title: Text(AppLocalizations.of(context)!.navigationRolesSettings),
onTap: () => navigateNamed(context, Pages.roles),
);
}

View File

@@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
import 'package:pweb/app/router/pages.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
class UsersSettingsTile extends StatelessWidget {
const UsersSettingsTile({
super.key,
});
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.people),
title: Text(AppLocalizations.of(context)!.navigationUsersSettings),
onTap: () => navigateNamed(context, Pages.users),
);
}
}