mirror of
https://github.com/immich-app/immich.git
synced 2026-02-28 17:49:05 +03:00
* feat: html text * feat: mobile ui showcase (#25827) * feat: mobile ui showcase * remove showcase from main app * update fonts * update code to be loaded from asset * fix ci --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> # Conflicts: # mobile/lib/widgets/common/immich_sliver_app_bar.dart --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
98 lines
2.4 KiB
Dart
98 lines
2.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
enum AppRouteCategory {
|
|
root(''),
|
|
forms('Forms'),
|
|
buttons('Buttons'),
|
|
designSystem('Design System');
|
|
|
|
final String displayName;
|
|
const AppRouteCategory(this.displayName);
|
|
}
|
|
|
|
enum AppRoute {
|
|
home(
|
|
name: 'Home',
|
|
description: 'Home page',
|
|
path: '/',
|
|
category: AppRouteCategory.root,
|
|
icon: Icons.home_outlined,
|
|
),
|
|
textButton(
|
|
name: 'Text Button',
|
|
description: 'Versatile button with filled and ghost variants',
|
|
path: '/text-button',
|
|
category: AppRouteCategory.buttons,
|
|
icon: Icons.smart_button_rounded,
|
|
),
|
|
iconButton(
|
|
name: 'Icon Button',
|
|
description: 'Icon-only button with customizable styling',
|
|
path: '/icon-button',
|
|
category: AppRouteCategory.buttons,
|
|
icon: Icons.radio_button_unchecked_rounded,
|
|
),
|
|
closeButton(
|
|
name: 'Close Button',
|
|
description: 'Pre-configured close button for dialogs',
|
|
path: '/close-button',
|
|
category: AppRouteCategory.buttons,
|
|
icon: Icons.close_rounded,
|
|
),
|
|
textInput(
|
|
name: 'Text Input',
|
|
description: 'Text field with validation support',
|
|
path: '/text-input',
|
|
category: AppRouteCategory.forms,
|
|
icon: Icons.text_fields_outlined,
|
|
),
|
|
passwordInput(
|
|
name: 'Password Input',
|
|
description: 'Password field with visibility toggle',
|
|
path: '/password-input',
|
|
category: AppRouteCategory.forms,
|
|
icon: Icons.password_outlined,
|
|
),
|
|
form(
|
|
name: 'Form',
|
|
description: 'Form container with built-in validation',
|
|
path: '/form',
|
|
category: AppRouteCategory.forms,
|
|
icon: Icons.description_outlined,
|
|
),
|
|
htmlText(
|
|
name: 'Html Text',
|
|
description: 'Render text with HTML formatting',
|
|
path: '/html-text',
|
|
category: AppRouteCategory.forms,
|
|
icon: Icons.code_rounded,
|
|
),
|
|
constants(
|
|
name: 'Constants',
|
|
description: 'Spacing, colors, typography, and more',
|
|
path: '/constants',
|
|
category: AppRouteCategory.designSystem,
|
|
icon: Icons.palette_outlined,
|
|
);
|
|
|
|
final String name;
|
|
final String description;
|
|
final String path;
|
|
final AppRouteCategory category;
|
|
final IconData icon;
|
|
|
|
const AppRoute({
|
|
required this.name,
|
|
required this.description,
|
|
required this.path,
|
|
required this.category,
|
|
required this.icon,
|
|
});
|
|
}
|
|
|
|
final routesByCategory = AppRoute.values
|
|
.fold<Map<AppRouteCategory, List<AppRoute>>>({}, (map, route) {
|
|
map.putIfAbsent(route.category, () => []).add(route);
|
|
return map;
|
|
});
|