diff --git a/frontend/memoree_client/.gitignore b/frontend/memoree_client/.gitignore index 8906afc..5c9a923 100755 --- a/frontend/memoree_client/.gitignore +++ b/frontend/memoree_client/.gitignore @@ -44,3 +44,5 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release + +**secrets** diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Black.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Black.ttf new file mode 100755 index 0000000..437b115 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Black.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-BlackItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-BlackItalic.ttf new file mode 100755 index 0000000..5234835 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-BlackItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Bold.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Bold.ttf new file mode 100755 index 0000000..221819b Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Bold.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-BoldItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-BoldItalic.ttf new file mode 100755 index 0000000..9ae2bd2 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-BoldItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBold.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBold.ttf new file mode 100755 index 0000000..80ea806 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBold.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBoldItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBoldItalic.ttf new file mode 100755 index 0000000..6c961e1 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraBoldItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLight.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLight.ttf new file mode 100755 index 0000000..ca0bbb6 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLight.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLightItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLightItalic.ttf new file mode 100755 index 0000000..f3c1559 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-ExtraLightItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Italic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Italic.ttf new file mode 100755 index 0000000..eb4232a Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Italic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Light.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Light.ttf new file mode 100755 index 0000000..990857d Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Light.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-LightItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-LightItalic.ttf new file mode 100755 index 0000000..2096040 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-LightItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Medium.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Medium.ttf new file mode 100755 index 0000000..6e079f6 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Medium.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-MediumItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-MediumItalic.ttf new file mode 100755 index 0000000..0dc3ac9 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-MediumItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Regular.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Regular.ttf new file mode 100755 index 0000000..8d443d5 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Regular.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBold.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBold.ttf new file mode 100755 index 0000000..f8a43f2 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBold.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBoldItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBoldItalic.ttf new file mode 100755 index 0000000..336c56e Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-SemiBoldItalic.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-Thin.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-Thin.ttf new file mode 100755 index 0000000..b985875 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-Thin.ttf differ diff --git a/frontend/memoree_client/fonts/Montserrat/Montserrat-ThinItalic.ttf b/frontend/memoree_client/fonts/Montserrat/Montserrat-ThinItalic.ttf new file mode 100755 index 0000000..e488998 Binary files /dev/null and b/frontend/memoree_client/fonts/Montserrat/Montserrat-ThinItalic.ttf differ diff --git a/frontend/memoree_client/fonts/OpenSans-Bold.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-Bold.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-Bold.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-Bold.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-BoldItalic.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-BoldItalic.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-BoldItalic.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-BoldItalic.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-ExtraBold.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-ExtraBold.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-ExtraBold.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-ExtraBold.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-ExtraBoldItalic.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-ExtraBoldItalic.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-Italic.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-Italic.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-Italic.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-Italic.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-Light.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-Light.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-Light.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-Light.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-LightItalic.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-LightItalic.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-LightItalic.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-LightItalic.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-Regular.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-Regular.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-Regular.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-Regular.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-SemiBold.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-SemiBold.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-SemiBold.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-SemiBold.ttf diff --git a/frontend/memoree_client/fonts/OpenSans-SemiBoldItalic.ttf b/frontend/memoree_client/fonts/OpenSans/OpenSans-SemiBoldItalic.ttf similarity index 100% rename from frontend/memoree_client/fonts/OpenSans-SemiBoldItalic.ttf rename to frontend/memoree_client/fonts/OpenSans/OpenSans-SemiBoldItalic.ttf diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Black.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Black.ttf new file mode 100755 index 0000000..5864e26 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Black.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-BlackItalic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-BlackItalic.ttf new file mode 100755 index 0000000..869037b Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-BlackItalic.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Bold.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Bold.ttf new file mode 100755 index 0000000..96619df Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Bold.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-BoldItalic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-BoldItalic.ttf new file mode 100755 index 0000000..bdd22b0 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-BoldItalic.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Italic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Italic.ttf new file mode 100755 index 0000000..5b44037 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Italic.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Light.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Light.ttf new file mode 100755 index 0000000..33de1c3 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Light.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-LightItalic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-LightItalic.ttf new file mode 100755 index 0000000..00c76b8 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-LightItalic.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Medium.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Medium.ttf new file mode 100755 index 0000000..fd818d6 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Medium.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-MediumItalic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-MediumItalic.ttf new file mode 100755 index 0000000..ec70cd3 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-MediumItalic.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Regular.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Regular.ttf new file mode 100755 index 0000000..e2c69c3 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Regular.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-Thin.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-Thin.ttf new file mode 100755 index 0000000..5e046b5 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-Thin.ttf differ diff --git a/frontend/memoree_client/fonts/ProductSans/ProductSans-ThinItalic.ttf b/frontend/memoree_client/fonts/ProductSans/ProductSans-ThinItalic.ttf new file mode 100755 index 0000000..7b04955 Binary files /dev/null and b/frontend/memoree_client/fonts/ProductSans/ProductSans-ThinItalic.ttf differ diff --git a/frontend/memoree_client/fonts/f2pub.py b/frontend/memoree_client/fonts/f2pub.py new file mode 100755 index 0000000..9fe6152 --- /dev/null +++ b/frontend/memoree_client/fonts/f2pub.py @@ -0,0 +1,27 @@ +#!/env/python3 + +import sys +import sh + +folder = sys.argv[1] +files = sh.ls("-1", folder, _iter=True) +weight_mapping = { + 'Thin': 100, + 'ExtraLight': 200, + 'Light': 300, + 'Medium': 500, + 'SemiBold': 600, + 'Bold': 700, + 'ExtraBold': 800, + 'Black': 900, +} + +for file in files: + file = str(file[:-1]) + print("- asset: fonts/" + folder + "/" + file) + for key, value in weight_mapping.items(): + if key in file: + print(" weight:", value) + break + if "Italic" in file: + print(" style: italic") \ No newline at end of file diff --git a/frontend/memoree_client/lib/constants.dart b/frontend/memoree_client/lib/app/models/constants.dart similarity index 100% rename from frontend/memoree_client/lib/constants.dart rename to frontend/memoree_client/lib/app/models/constants.dart diff --git a/frontend/memoree_client/lib/themes.dart b/frontend/memoree_client/lib/app/models/themes.dart similarity index 94% rename from frontend/memoree_client/lib/themes.dart rename to frontend/memoree_client/lib/app/models/themes.dart index 71fe319..297fbec 100755 --- a/frontend/memoree_client/lib/themes.dart +++ b/frontend/memoree_client/lib/app/models/themes.dart @@ -3,13 +3,13 @@ import 'package:flutter/material.dart'; class AppTheme { AppTheme._(); - static Color _iconColor = Colors.redAccent.shade200; + static Color _iconColor = Colors.black87; static const Color _lightPrimaryColor = Colors.white; static const Color _lightPrimaryVariantColor = Colors.white; static const Color _lightSecondaryColor = Colors.green; - static const Color _lightOnPrimaryColor = Colors.black; - static const String _fontFamily = "OpenSans"; + static const Color _lightOnPrimaryColor = Color(0xff3c4043); + static const String _fontFamily = "Montserrat"; static final ThemeData lightTheme = ThemeData( fontFamily: _fontFamily, diff --git a/frontend/memoree_client/lib/app/models/user.dart b/frontend/memoree_client/lib/app/models/user.dart new file mode 100755 index 0000000..3d1f23b --- /dev/null +++ b/frontend/memoree_client/lib/app/models/user.dart @@ -0,0 +1,16 @@ +import 'package:meta/meta.dart'; + +@immutable +class User { + final String uid; + final String email; + final String photoUrl; + final String displayName; + + const User({ + @required this.uid, + this.email, + this.photoUrl, + this.displayName + }); +} \ No newline at end of file diff --git a/frontend/memoree_client/lib/video_data.dart b/frontend/memoree_client/lib/app/models/video_data.dart similarity index 100% rename from frontend/memoree_client/lib/video_data.dart rename to frontend/memoree_client/lib/app/models/video_data.dart diff --git a/frontend/memoree_client/lib/app/pages/app_scaffold.dart b/frontend/memoree_client/lib/app/pages/app_scaffold.dart new file mode 100755 index 0000000..e04a17a --- /dev/null +++ b/frontend/memoree_client/lib/app/pages/app_scaffold.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; + +import 'package:memoree_client/app/pages/video_page.dart'; +import 'package:memoree_client/app/widgets/app_bar.dart'; +import 'package:memoree_client/app/widgets/drawer.dart'; + +class AppScaffold extends StatelessWidget { + final String page; + const AppScaffold({Key key, this.page}) : super(key: key); + + @override + Widget build(BuildContext context) { + final bool isMobileLayout = MediaQuery.of(context).size.width < 600; + final bool isTabletLayout = MediaQuery.of(context).size.width < 1008; + + return Scaffold( + appBar: + CustomAppBar(isMobile: isMobileLayout, isTablet: isTabletLayout), + drawer: isMobileLayout ? AppDrawer(isMobile: isMobileLayout,) : null, + body: SafeArea( + child: Container( + child: Row(children: [ + if (!isMobileLayout) AppDrawer(isMobile: isMobileLayout,), + Container( + child: Expanded(child: VideoPage())) + ])))); + } +} diff --git a/frontend/memoree_client/lib/app/pages/login.dart b/frontend/memoree_client/lib/app/pages/login.dart new file mode 100755 index 0000000..1a93ffe --- /dev/null +++ b/frontend/memoree_client/lib/app/pages/login.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:memoree_client/app/services/firebase_auth.dart'; +import 'package:memoree_client/app/pages/app_scaffold.dart'; +import 'package:memoree_client/app/models/constants.dart'; + +class LoginPage extends StatefulWidget { + @override + _LoginPageState createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: Container( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image(image: AssetImage("logos/memoree_logo.png"), height: 275,), + Text(PageTitles.appName, textScaleFactor: 2, style: TextStyle(color: Color(0xffb83b5e), letterSpacing: 1, fontWeight: FontWeight.w600),), + SizedBox(height: 50,), + OutlineButton( + splashColor: Colors.grey, + onPressed: () { + FirebaseAuthService().signInWithGoogle().then((user) { + if (user != null) { + Navigator.of(context).pop(); + Navigator.of(context).push(MaterialPageRoute( + builder: (context) { + return AppScaffold(page: 'videos'); + }, + ),); + } + }); + }, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(40)), + highlightElevation: 0, + borderSide: BorderSide(color: Colors.grey), + child: Padding( + padding: const EdgeInsets.only(top: 10.0, bottom: 10.0), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image(image: AssetImage("logos/google_logo.png"), height: 30.0), + Padding( + padding: const EdgeInsets.only(left: 10.0), + child: Text("Sign in with Google") + ), + ], + ), + ), + ), + ] + ), + ), + ), + ), + ); + } +} diff --git a/frontend/memoree_client/lib/app/pages/video_page.dart b/frontend/memoree_client/lib/app/pages/video_page.dart new file mode 100755 index 0000000..9e6072e --- /dev/null +++ b/frontend/memoree_client/lib/app/pages/video_page.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; + +import 'package:memoree_client/app/widgets/grid_results.dart'; + +class VideoPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: Future.delayed(Duration(seconds: 3)), + builder: (context, snapshot) { + switch(snapshot.connectionState) { + case ConnectionState.none: + case ConnectionState.waiting: + return Center(child: CircularProgressIndicator()); + break; + case ConnectionState.active: + case ConnectionState.done: + return Padding( + padding: const EdgeInsets.only(top: 25.0), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(20.0, 5, 20, 0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 9, + child: Text("Results for: ", textScaleFactor: 1.5, style: TextStyle(fontWeight: FontWeight.w500),), + ), + Expanded( + flex: 2, + child: Text("98%", textAlign: TextAlign.right,) + ) + ], + ), + ), + Padding( + padding: const EdgeInsets.only(top: 8.0), + child: Divider(height: 1, thickness: 1.5,) + ), + Expanded( + child: ContentGrid() + ), + ], + ) + ); + break; + } + return Container(); + } + ); + } +} \ No newline at end of file diff --git a/frontend/memoree_client/lib/pages/videos.dart b/frontend/memoree_client/lib/app/pages/videos.dart similarity index 100% rename from frontend/memoree_client/lib/pages/videos.dart rename to frontend/memoree_client/lib/app/pages/videos.dart diff --git a/frontend/memoree_client/lib/app/services/firebase_auth.dart b/frontend/memoree_client/lib/app/services/firebase_auth.dart new file mode 100755 index 0000000..6f1efb3 --- /dev/null +++ b/frontend/memoree_client/lib/app/services/firebase_auth.dart @@ -0,0 +1,52 @@ +import 'package:firebase_auth/firebase_auth.dart' as auth; +import 'package:firebase_core/firebase_core.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:memoree_client/app/models/user.dart'; + +class FirebaseAuthService { + final auth.FirebaseAuth _firebaseAuth; + final GoogleSignIn _googleSignIn; + + FirebaseAuthService({auth.FirebaseAuth firebaseAuth, GoogleSignIn googleSignin}) + : _firebaseAuth = firebaseAuth ?? auth.FirebaseAuth.instance, + _googleSignIn = googleSignin ?? GoogleSignIn(); + + User _userFromFirebase(auth.User user) { + if (user == null) { + return null; + } + return User( + uid: user.uid, + email: user.email, + displayName: user.displayName, + photoUrl: user.photoURL, + ); + } + + Stream get onAuthStateChanged { + return _firebaseAuth.authStateChanges().map(_userFromFirebase); + } + + Future signInWithGoogle() async { + await Firebase.initializeApp(); + + final googleUser = await _googleSignIn.signIn(); + final googleAuth = await googleUser.authentication; + final credential = auth.GoogleAuthProvider.credential( + accessToken: googleAuth.accessToken, + idToken: googleAuth.idToken, + ); + final authResult = await _firebaseAuth.signInWithCredential(credential); + return _userFromFirebase(authResult.user); + } + + Future signOut() async { + await _googleSignIn.disconnect(); + return _firebaseAuth.signOut(); + } + + Future currentUser() async { + final user = _firebaseAuth.currentUser; + return _userFromFirebase(user); + } +} \ No newline at end of file diff --git a/frontend/memoree_client/lib/app/widgets/account_info.dart b/frontend/memoree_client/lib/app/widgets/account_info.dart new file mode 100755 index 0000000..88ddff8 --- /dev/null +++ b/frontend/memoree_client/lib/app/widgets/account_info.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +import 'package:memoree_client/app/pages/login.dart'; +import 'package:memoree_client/app/services/firebase_auth.dart'; + +class AccountInfo extends StatefulWidget { + @override + _AccountInfoState createState() => _AccountInfoState(); +} + +class _AccountInfoState extends State { + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: FirebaseAuthService().currentUser(), + builder: (context, snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.none: + case ConnectionState.waiting: + return Padding( + padding: const EdgeInsets.all(20.0), + child: Center(child: CircularProgressIndicator()), + ); + break; + case ConnectionState.active: + case ConnectionState.done: + return Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CircleAvatar( + radius: 35, + child: ClipOval( + child: Image.network(snapshot.data.photoUrl, fit: BoxFit.cover) + ), + ), + SizedBox(height: 20,), + Text(snapshot.data.displayName, textScaleFactor: 1.25), + Text(snapshot.data.email, style: TextStyle(color: Colors.black54,)), + SizedBox(height: 20,), + Divider(thickness: 1,), + SizedBox(height: 15,), + OutlineButton( + // padding: const EdgeInsets.only(top: 20.0), + splashColor: Colors.grey, + onPressed: () async { + await FirebaseAuthService().signOut(); + Navigator.of(context).pop(); + Navigator.of(context).push(MaterialPageRoute( + builder: (context) { + return LoginPage(); + })); + }, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(2)), + highlightElevation: 0, + borderSide: BorderSide(color: Colors.grey), + child: Padding( + padding: const EdgeInsets.all(10), + child: Text("Sign out", textScaleFactor: 1.1,) + ), + ), + ], + ), + ); + break; + } + return Center(); + } + ); + } +} \ No newline at end of file diff --git a/frontend/memoree_client/lib/app/widgets/app_bar.dart b/frontend/memoree_client/lib/app/widgets/app_bar.dart new file mode 100755 index 0000000..a1ed34c --- /dev/null +++ b/frontend/memoree_client/lib/app/widgets/app_bar.dart @@ -0,0 +1,141 @@ +import 'package:flutter/material.dart'; + +import 'package:memoree_client/app/services/firebase_auth.dart'; +import 'package:memoree_client/app/models/constants.dart'; +import 'package:memoree_client/app/widgets/account_info.dart'; +import 'package:memoree_client/search.dart'; + +class CustomAppBar extends StatefulWidget with PreferredSizeWidget { + final bool isMobile, isTablet; + + CustomAppBar({Key key, @required this.isMobile, @required this.isTablet}) + : super(key: key); + + @override + _CustomAppBarState createState() => _CustomAppBarState(); + + @override + Size get preferredSize => Size.fromHeight(kToolbarHeight); +} + +class _CustomAppBarState extends State { + @override + Widget build(BuildContext context) { + return AppBar( + toolbarHeight: 65, + elevation: 1, + // automaticallyImplyLeading: false, + flexibleSpace: Container(), + centerTitle: true, + title: Row( + children: [ + Text(PageTitles.appName, style: TextStyle(fontWeight: FontWeight.w400, fontFamily: "ProductSans")), + SizedBox(width: 8,), + if (!widget.isTablet) + Flexible( + flex: 5, + child: Container( + constraints: BoxConstraints(minWidth: 100, maxWidth: 900), + padding: const EdgeInsets.all(100.0), + child: SearchWidget(), + )), + // Expanded(flex: 2, child: Container()) + ], + ), + actions: [ + if (widget.isTablet) + Container( + padding: const EdgeInsets.only(right: 10.0, left: 10.0), + child: IconButton( + icon: const Icon(Icons.search_outlined), + tooltip: ActionNames.search, + splashRadius: 25, + onPressed: () => {}, + )), + Container( + padding: const EdgeInsets.only(right: 10.0, left: 10.0), + child: IconButton( + icon: const Icon(Icons.cloud_upload_outlined), + tooltip: ActionNames.upload, + splashRadius: 25, + onPressed: () => {}), + ), + if (!widget.isMobile) + Container( + padding: const EdgeInsets.only(right: 10.0, left: 10.0), + child: IconButton( + icon: const Icon(Icons.settings_outlined), + tooltip: ActionNames.settings, + splashRadius: 25, + onPressed: () => {}), + ), + if (!widget.isMobile) + Container( + padding: const EdgeInsets.only(right: 10.0, left: 10.0), + decoration: BoxDecoration( + shape: BoxShape.circle, + ), + child: FutureBuilder( + future: FirebaseAuthService().currentUser(), + builder: (context, snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.none: + case ConnectionState.waiting: + return Center(child: CircularProgressIndicator()); + break; + case ConnectionState.active: + case ConnectionState.done: + return Material( + color: Colors.transparent, + child: InkWell( + onTap: () { + showDialog( + context: context, + barrierColor: Colors.transparent, + barrierDismissible: true, + builder: (context) { + return Align( + alignment: Alignment(0.98, -0.79), + child: Material( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(5.0)), + child: Container( + width: 300, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(5.0), + boxShadow: [ + BoxShadow(blurRadius: 1.0), + ] + ), + child: AccountInfo(), + ), + ), + ); + } + ); + }, + splashColor: Colors.grey, + customBorder: CircleBorder(), + child: Tooltip( + message: "Google Account\n" + snapshot.data.displayName + "\n" + snapshot.data.email, + padding: const EdgeInsets.all(2.0), + child: CircleAvatar( + radius: 15, + child: ClipOval( + child: Image.network(snapshot.data.photoUrl, fit: BoxFit.cover), + ), + ), + ), + ) + ); + break; + } + return Container(); + }, + ), + ), + Container(padding: const EdgeInsets.all(5.0)), + ]); + } +} diff --git a/frontend/memoree_client/lib/widgets/carousel.dart b/frontend/memoree_client/lib/app/widgets/carousel.dart similarity index 100% rename from frontend/memoree_client/lib/widgets/carousel.dart rename to frontend/memoree_client/lib/app/widgets/carousel.dart diff --git a/frontend/memoree_client/lib/drawer.dart b/frontend/memoree_client/lib/app/widgets/drawer.dart similarity index 66% rename from frontend/memoree_client/lib/drawer.dart rename to frontend/memoree_client/lib/app/widgets/drawer.dart index cdd0847..27ea343 100755 --- a/frontend/memoree_client/lib/drawer.dart +++ b/frontend/memoree_client/lib/app/widgets/drawer.dart @@ -1,7 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:memoree_client/constants.dart'; + +import 'package:memoree_client/app/models/constants.dart'; +import 'package:memoree_client/app/widgets/account_info.dart'; class AppDrawer extends StatefulWidget { + final isMobile; + + AppDrawer({this.isMobile}); @override _AppDrawerState createState() => _AppDrawerState(); @@ -22,15 +27,19 @@ class _AppDrawerState extends State { child: ListView( padding: EdgeInsets.only(top: 25.0), children: [ + if(widget.isMobile) + AccountInfo(), + if(widget.isMobile) + Divider(thickness: 2.0), ListTile( leading: const Icon(Icons.movie_outlined), - title: const Text(PageTitles.videos), + title: const Text(PageTitles.videos, style: TextStyle(fontWeight: FontWeight.w500)), selected: _selectedIndex == 0, onTap: () => { }, ), ListTile( leading: const Icon(Icons.video_library_outlined), - title: const Text(PageTitles.folders), + title: const Text(PageTitles.folders, style: TextStyle(fontWeight: FontWeight.w500)), selected: _selectedIndex == 1, onTap: () => {}, ), diff --git a/frontend/memoree_client/lib/widgets/grid_results.dart b/frontend/memoree_client/lib/app/widgets/grid_results.dart similarity index 77% rename from frontend/memoree_client/lib/widgets/grid_results.dart rename to frontend/memoree_client/lib/app/widgets/grid_results.dart index ea6bd64..deded30 100755 --- a/frontend/memoree_client/lib/widgets/grid_results.dart +++ b/frontend/memoree_client/lib/app/widgets/grid_results.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; -import 'package:memoree_client/widgets/video_card.dart'; + +import 'package:memoree_client/app/widgets/video_card.dart'; class ContentGrid extends StatefulWidget { @override @@ -17,7 +17,8 @@ class _ContentGridState extends State { gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( maxCrossAxisExtent: 300.0, crossAxisSpacing: 20.0, - // mainAxisSpacing: 20.0, + mainAxisSpacing: 10.0, + // childAspectRatio: 1.15, ), itemBuilder: (BuildContext context, int index) { return VideoCard(null); diff --git a/frontend/memoree_client/lib/thumbnail.dart b/frontend/memoree_client/lib/app/widgets/thumbnail.dart similarity index 94% rename from frontend/memoree_client/lib/thumbnail.dart rename to frontend/memoree_client/lib/app/widgets/thumbnail.dart index 18415d4..cf247ec 100755 --- a/frontend/memoree_client/lib/thumbnail.dart +++ b/frontend/memoree_client/lib/app/widgets/thumbnail.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:memoree_client/video_data.dart'; +import 'package:memoree_client/app/models/video_data.dart'; class ThumbnailGenerator extends StatelessWidget { final VideoData videoData; diff --git a/frontend/memoree_client/lib/app/widgets/video_card.dart b/frontend/memoree_client/lib/app/widgets/video_card.dart new file mode 100755 index 0000000..18a0cfd --- /dev/null +++ b/frontend/memoree_client/lib/app/widgets/video_card.dart @@ -0,0 +1,157 @@ +import 'dart:ui'; +import 'package:flutter/material.dart'; + +import 'package:memoree_client/app/widgets/thumbnail.dart'; +import 'package:memoree_client/app/models/video_data.dart'; + +class VideoCard extends StatefulWidget { + final VideoData videoData; + + VideoCard(this.videoData); + + @override + _VideoCardState createState() => _VideoCardState(); +} + +class _VideoCardState extends State { + bool _isHovering; + ScrollController _scrollController = ScrollController(); + bool _isScrolling; + + @override + void initState() { + super.initState(); + _isHovering = false; + _isScrolling = false; + } + + void _updateHoverStatus(bool status) { + setState(() { + _isHovering = status; + }); + } + + void _updateScrollingStatus() { + setState(() { + _isScrolling = !_isScrolling; + }); + + if(_isScrolling) + { + double maxExtent = _scrollController.position.maxScrollExtent; + double distanceDifference = maxExtent - _scrollController.offset; + double durationDouble = distanceDifference / 20; + + _scrollController.animateTo( + maxExtent, + duration: Duration(seconds: durationDouble.toInt()), + curve: Curves.linear + ); + } + else + _scrollController.animateTo( + _scrollController.position.minScrollExtent, + duration: Duration(milliseconds: 10), + curve: Curves.linear + ); + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Positioned.fill( + child: Container( + // elevation: 1, + child: Column( + mainAxisSize: MainAxisSize.min, + // crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AspectRatio( + aspectRatio: 3 / 2, + child: ThumbnailGenerator(videoData: widget.videoData, dryrun: true) + ), + Padding( + padding: EdgeInsets.only(bottom: 5.0, top: 5.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 9, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Hello World"), + SizedBox(height: 5), + Stack( + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + controller: _scrollController, + child: Text( + "This is an extremely long text its so long that it is sometimes rendered weirdly ", + textScaleFactor: 0.9, + style: TextStyle(color: Colors.black54), + ) + ), + Positioned.fill( + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.centerRight, + end: Alignment.centerLeft, + stops: [0, 0.065], + colors: [ + Theme.of(context).scaffoldBackgroundColor, + Theme.of(context).scaffoldBackgroundColor.withOpacity(0), + ], + ), + ), + ), + ), + ], + ), + ], + ), + ), + Expanded( + flex: 3, + child: Text("98%", textAlign: TextAlign.right, style: TextStyle(fontWeight: FontWeight.w500),) + ) + ] + ) + ) + ], + ) + ), + ), + Positioned( + child: AnimatedOpacity( + opacity: _isHovering ? 1.0 : 0.0, + duration: Duration(milliseconds: 100), + child: AspectRatio( + aspectRatio: 3 / 2, + child: Center( + child: const Icon(Icons.play_arrow, size: 100) + ), + ), + ), + ), + Positioned.fill( + child: Material( + color: Colors.transparent, + child: InkWell( + onHover: (isHovering) { + _updateHoverStatus(isHovering); + _updateScrollingStatus(); + }, + onTap: () {}, + ), + ), + ), + ], + ); + } +} \ No newline at end of file diff --git a/frontend/memoree_client/lib/app_scaffold.dart b/frontend/memoree_client/lib/app_scaffold.dart deleted file mode 100755 index cd0de17..0000000 --- a/frontend/memoree_client/lib/app_scaffold.dart +++ /dev/null @@ -1,45 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:memoree_client/widgets/app_bar.dart'; -import 'package:memoree_client/widgets/grid_results.dart'; -import 'drawer.dart'; - -class AppScaffold extends StatelessWidget { - const AppScaffold({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final bool isMobileLayout = MediaQuery.of(context).size.width < 600; - final bool isTabletLayout = MediaQuery.of(context).size.width < 1008; - - return Scaffold( - appBar: CustomAppBar( - isMobile: isMobileLayout, - isTablet: isTabletLayout - ), - drawer: isMobileLayout ? AppDrawer() : null, - body: SafeArea( - child: Container( - child: Row( - children: [ - if(!isMobileLayout) - AppDrawer(), - Container( - child: Expanded( - child: ContentGrid() - ) - ) - ] - ) - ) - ) - ); - } - - Widget appDrawer(bool isMobile, bool isTablet) - { - if(isMobile) - return AppDrawer(); - - return null; - } -} \ No newline at end of file diff --git a/frontend/memoree_client/lib/main.dart b/frontend/memoree_client/lib/main.dart index 11eabdc..1fd0ee1 100755 --- a/frontend/memoree_client/lib/main.dart +++ b/frontend/memoree_client/lib/main.dart @@ -1,26 +1,18 @@ import 'package:flutter/material.dart'; -import 'package:memoree_client/app_scaffold.dart'; -import 'package:memoree_client/constants.dart'; -import 'package:memoree_client/drawer.dart'; -import 'package:memoree_client/search.dart'; -import 'package:memoree_client/themes.dart'; + +import 'package:memoree_client/app/models/constants.dart'; +import 'package:memoree_client/app/pages/login.dart'; +import 'package:memoree_client/app/models/themes.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { - // This widget is the root of your application. @override Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: PageTitles.appName, - theme: AppTheme.lightTheme, - initialRoute: '/', - routes: { - '/': (context) => AppScaffold(), - '/login': (context) => Text("Under construction") - } - ); + debugShowCheckedModeBanner: false, + title: PageTitles.appName, + theme: AppTheme.lightTheme, + home: LoginPage()); } } diff --git a/frontend/memoree_client/lib/widgets/app_bar.dart b/frontend/memoree_client/lib/widgets/app_bar.dart deleted file mode 100755 index 93a843f..0000000 --- a/frontend/memoree_client/lib/widgets/app_bar.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:memoree_client/constants.dart'; -import 'package:memoree_client/search.dart'; - -class CustomAppBar extends StatefulWidget with PreferredSizeWidget { - final bool isMobile, isTablet; - - CustomAppBar({Key key, @required this.isMobile, @required this.isTablet}) : super(key : key); - - @override - _CustomAppBarState createState() => _CustomAppBarState(); - - @override - Size get preferredSize => Size.fromHeight(kToolbarHeight); -} - -class _CustomAppBarState extends State { - @override - Widget build(BuildContext context) { - return AppBar( - toolbarHeight: 65, - elevation: 1, - // automaticallyImplyLeading: false, - flexibleSpace: Container(), - centerTitle: true, - title: Row( - children: [ - Text(PageTitles.appName), - if(!widget.isTablet) - Flexible( - flex: 5, - child: Container( - constraints: BoxConstraints(minWidth: 100, maxWidth: 900), - padding: const EdgeInsets.all(100.0), - child: SearchWidget(), - ) - ), - // Expanded(flex: 2, child: Container()) - ], - ), - actions: [ - if(widget.isTablet) - Container( - padding: const EdgeInsets.only(right: 10.0, left: 10.0), - child: IconButton( - icon: const Icon(Icons.search_outlined), - tooltip: ActionNames.search, - splashRadius: 25, - onPressed: () => {}, - ) - ), - Container( - padding: const EdgeInsets.only(right: 10.0, left: 10.0), - child: IconButton( - icon: const Icon(Icons.cloud_upload_outlined), - tooltip: ActionNames.upload, - splashRadius: 25, - onPressed: () => {} - ), - ), - if(!widget.isMobile) - Container( - padding: const EdgeInsets.only(right: 10.0, left: 10.0), - child: IconButton( - icon: const Icon(Icons.settings_outlined), - tooltip: ActionNames.settings, - splashRadius: 25, - onPressed: () => {} - ), - ), - Container(padding: const EdgeInsets.all(5.0)), - ] - ); - } -} \ No newline at end of file diff --git a/frontend/memoree_client/lib/widgets/video_card.dart b/frontend/memoree_client/lib/widgets/video_card.dart deleted file mode 100755 index f799329..0000000 --- a/frontend/memoree_client/lib/widgets/video_card.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:memoree_client/thumbnail.dart'; -import 'package:memoree_client/video_data.dart'; - -class VideoCard extends StatelessWidget { - final VideoData videoData; - - VideoCard(this.videoData); - - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: () => {}, - child: Container( - // elevation: 1, - width: 200, - child: Column( - mainAxisSize: MainAxisSize.min, - // crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AspectRatio( - aspectRatio: 3 / 2, - child: ThumbnailGenerator(videoData: this.videoData, dryrun: true) - ), - Padding( - padding: EdgeInsets.all(5.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - flex: 9, - child: Text("Hello World") - ), - Expanded( - flex: 2, - child: Text("98%", textAlign: TextAlign.right,) - ) - ] - ) - ) - ], - ) - ), - ); - } -} \ No newline at end of file diff --git a/frontend/memoree_client/logos/google_logo.png b/frontend/memoree_client/logos/google_logo.png new file mode 100755 index 0000000..371a6ae Binary files /dev/null and b/frontend/memoree_client/logos/google_logo.png differ diff --git a/frontend/memoree_client/logos/memoree_logo.png b/frontend/memoree_client/logos/memoree_logo.png new file mode 100755 index 0000000..71fc498 Binary files /dev/null and b/frontend/memoree_client/logos/memoree_logo.png differ diff --git a/frontend/memoree_client/pubspec.lock b/frontend/memoree_client/pubspec.lock index fe6dc0f..56e31ec 100755 --- a/frontend/memoree_client/pubspec.lock +++ b/frontend/memoree_client/pubspec.lock @@ -139,13 +139,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_staggered_grid_view: - dependency: "direct main" - description: - name: flutter_staggered_grid_view - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.3" flutter_test: dependency: "direct dev" description: flutter @@ -378,13 +371,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.4+1" - video_thumbnail_generator: - dependency: "direct main" - description: - name: video_thumbnail_generator - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.6" win32: dependency: transitive description: @@ -401,4 +387,4 @@ packages: version: "0.1.2" sdks: dart: ">=2.12.0-0.0 <3.0.0" - flutter: ">=1.17.0 <2.0.0" + flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/frontend/memoree_client/pubspec.yaml b/frontend/memoree_client/pubspec.yaml index 0058378..66b1e68 100755 --- a/frontend/memoree_client/pubspec.yaml +++ b/frontend/memoree_client/pubspec.yaml @@ -23,20 +23,14 @@ environment: dependencies: flutter: sdk: flutter - firebase_core: "0.5.3" - firebase_auth: "^0.18.4+1" - cloud_functions: "^0.7.2" + cloud_functions: ^0.7.2 + cupertino_icons: ^1.0.0 + firebase_auth: ^0.18.4+1 + firebase_core: ^0.5.3 google_sign_in: ^4.5.6 - path_provider: ^1.6.24 http: ^0.12.2 - video_thumbnail_generator: ^0.0.6 + path_provider: ^1.6.24 video_player: ^1.0.1 - flutter_staggered_grid_view: "^0.3.2" - - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.0 dev_dependencies: flutter_test: @@ -44,7 +38,6 @@ dev_dependencies: # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec - # The following section is specific to Flutter. flutter: @@ -54,16 +47,14 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: + assets: + - logos/ # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg - # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. - # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a @@ -84,6 +75,105 @@ flutter: # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages fonts: - - family: OpenSans - fonts: - - asset: fonts/OpenSans-Regular.ttf + - family: OpenSans + fonts: + - asset: fonts/OpenSans/OpenSans-Bold.ttf + weight: 700 + - asset: fonts/OpenSans/OpenSans-BoldItalic.ttf + weight: 700 + style: italic + - asset: fonts/OpenSans/OpenSans-ExtraBold.ttf + weight: 800 + - asset: fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf + weight: 800 + style: italic + - asset: fonts/OpenSans/OpenSans-Italic.ttf + style: italic + - asset: fonts/OpenSans/OpenSans-Light.ttf + weight: 300 + - asset: fonts/OpenSans/OpenSans-LightItalic.ttf + weight: 300 + style: italic + - asset: fonts/OpenSans/OpenSans-Regular.ttf + - asset: fonts/OpenSans/OpenSans-SemiBold.ttf + weight: 600 + - asset: fonts/OpenSans/OpenSans-SemiBoldItalic.ttf + weight: 600 + style: italic + + - family: ProductSans + fonts: + - asset: fonts/ProductSans/ProductSans-Black.ttf + weight: 900 + - asset: fonts/ProductSans/ProductSans-BlackItalic.ttf + weight: 900 + style: italic + - asset: fonts/ProductSans/ProductSans-Bold.ttf + weight: 700 + - asset: fonts/ProductSans/ProductSans-BoldItalic.ttf + weight: 700 + style: italic + - asset: fonts/ProductSans/ProductSans-Italic.ttf + style: italic + - asset: fonts/ProductSans/ProductSans-Light.ttf + weight: 300 + - asset: fonts/ProductSans/ProductSans-LightItalic.ttf + weight: 300 + style: italic + - asset: fonts/ProductSans/ProductSans-Medium.ttf + weight: 500 + - asset: fonts/ProductSans/ProductSans-MediumItalic.ttf + weight: 500 + style: italic + - asset: fonts/ProductSans/ProductSans-Regular.ttf + - asset: fonts/ProductSans/ProductSans-Thin.ttf + weight: 100 + - asset: fonts/ProductSans/ProductSans-ThinItalic.ttf + weight: 100 + style: italic + + - family: Montserrat + fonts: + - asset: fonts/Montserrat/Montserrat-Black.ttf + weight: 900 + - asset: fonts/Montserrat/Montserrat-BlackItalic.ttf + weight: 900 + style: italic + - asset: fonts/Montserrat/Montserrat-Bold.ttf + weight: 700 + - asset: fonts/Montserrat/Montserrat-BoldItalic.ttf + weight: 700 + style: italic + - asset: fonts/Montserrat/Montserrat-ExtraBold.ttf + weight: 700 + - asset: fonts/Montserrat/Montserrat-ExtraBoldItalic.ttf + weight: 700 + style: italic + - asset: fonts/Montserrat/Montserrat-ExtraLight.ttf + weight: 200 + - asset: fonts/Montserrat/Montserrat-ExtraLightItalic.ttf + weight: 200 + style: italic + - asset: fonts/Montserrat/Montserrat-Italic.ttf + style: italic + - asset: fonts/Montserrat/Montserrat-Light.ttf + weight: 300 + - asset: fonts/Montserrat/Montserrat-LightItalic.ttf + weight: 300 + style: italic + - asset: fonts/Montserrat/Montserrat-Medium.ttf + weight: 500 + - asset: fonts/Montserrat/Montserrat-MediumItalic.ttf + weight: 500 + style: italic + - asset: fonts/Montserrat/Montserrat-Regular.ttf + - asset: fonts/Montserrat/Montserrat-SemiBold.ttf + weight: 600 + - asset: fonts/Montserrat/Montserrat-SemiBoldItalic.ttf + weight: 600 + style: italic + - asset: fonts/Montserrat/Montserrat-Thin.ttf + weight: 100 + - asset: fonts/Montserrat/Montserrat-ThinItalic.ttf + weight: 100 + style: italic diff --git a/frontend/memoree_client/web/favicon.png b/frontend/memoree_client/web/favicon.png index 8aaa46a..147faf8 100755 Binary files a/frontend/memoree_client/web/favicon.png and b/frontend/memoree_client/web/favicon.png differ diff --git a/frontend/memoree_client/web/index.html b/frontend/memoree_client/web/index.html index c7bb06e..40b31cf 100755 --- a/frontend/memoree_client/web/index.html +++ b/frontend/memoree_client/web/index.html @@ -26,10 +26,20 @@ - memoree_client + Memoree + + + + @@ -40,6 +50,29 @@ }); } + + + + + +