first commit

This commit is contained in:
2026-04-29 12:53:22 +07:00
commit e6a30eddd3
394 changed files with 16408 additions and 0 deletions

117
.gitignore vendored Normal file
View File

@@ -0,0 +1,117 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/*
# Visual Studio Code related
.classpath
.project
.settings/
.vscode/*
# packages file containing multi-root paths
.packages.generated
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds
.fvm/
# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
**/android/.idea/
**/android/app/debug
**/android/app/profile
**/android/app/release
*.jks
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/.last_build_id
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# Coverage
coverage/
# Submodules
packages/**/pubspec.lock
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Exceptions to the above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
!/dev/ci/**/Gemfile.lock
!.vscode/extensions.json
!.vscode/launch.json
!.idea/codeStyles/
!.idea/dictionaries/
!.idea/runConfigurations/
# Generated l10n files
lib/l10n/gen/

9
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,9 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"dart-code.dart-code",
"dart-code.flutter",
"felixangelov.bloc"
]
}

34
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,34 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch development",
"request": "launch",
"type": "dart",
"program": "lib/main_development.dart",
"args": [
"--flavor",
"development",
"--target",
"lib/main_development.dart"
]
},
{
"name": "Launch staging",
"request": "launch",
"type": "dart",
"program": "lib/main_staging.dart",
"args": ["--flavor", "staging", "--target", "lib/main_staging.dart"]
},
{
"name": "Launch production",
"request": "launch",
"type": "dart",
"program": "lib/main_production.dart",
"args": ["--flavor", "production", "--target", "lib/main_production.dart"]
}
]
}

176
README.md Normal file
View File

@@ -0,0 +1,176 @@
# ECCP
![coverage][coverage_badge]
[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
[![License: MIT][license_badge]][license_link]
Generated by the [Very Good CLI][very_good_cli_link] 🤖
ECCP
---
## Getting Started 🚀
This project contains 3 flavors:
- development
- staging
- production
To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:
```sh
# Development
$ flutter run --flavor development --target lib/main_development.dart
# Staging
$ flutter run --flavor staging --target lib/main_staging.dart
# Production
$ flutter run --flavor production --target lib/main_production.dart
```
_\*ECCP works on iOS, Android, Web, and Windows._
---
## Running Tests 🧪
To run all unit and widget tests use the following command:
```sh
$ very_good test --coverage --test-randomize-ordering-seed random
```
To view the generated coverage report you can use [lcov](https://github.com/linux-test-project/lcov).
```sh
# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/
# Open Coverage Report
$ open coverage/index.html
```
---
## Working with Translations 🌐
This project relies on [flutter_localizations][flutter_localizations_link] and follows the [official internationalization guide for Flutter][internationalization_link].
### Adding Strings
1. To add a new localizable string, open the `app_en.arb` file at `lib/l10n/arb/app_en.arb`.
```arb
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
}
}
```
2. Then add a new key/value and description
```arb
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"helloWorld": "Hello World",
"@helloWorld": {
"description": "Hello World Text"
}
}
```
3. Use the new string
```dart
import 'package:frontend_eccp_mobile/l10n/l10n.dart';
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
return Text(l10n.helloWorld);
}
```
### Adding Supported Locales
Update the `CFBundleLocalizations` array in the `Info.plist` at `ios/Runner/Info.plist` to include the new locale.
```xml
...
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>es</string>
</array>
...
```
### Adding Translations
1. For each supported locale, add a new ARB file in `lib/l10n/arb`.
```
├── l10n
│ ├── arb
│ │ ├── app_en.arb
│ │ └── app_es.arb
```
2. Add the translated strings to each `.arb` file:
`app_en.arb`
```arb
{
"@@locale": "en",
"counterAppBarTitle": "Counter",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
}
}
```
`app_es.arb`
```arb
{
"@@locale": "es",
"counterAppBarTitle": "Contador",
"@counterAppBarTitle": {
"description": "Texto mostrado en la AppBar de la página del contador"
}
}
```
### Generating Translations
To use the latest translations changes, you will need to generate them:
1. Generate localizations for the current project:
```sh
flutter gen-l10n --arb-dir="lib/l10n/arb"
```
Alternatively, run `flutter run` and code generation will take place automatically.
[coverage_badge]: coverage_badge.svg
[flutter_localizations_link]: https://api.flutter.dev/flutter/flutter_localizations/flutter_localizations-library.html
[internationalization_link]: https://flutter.dev/docs/development/accessibility-and-localization/internationalization
[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg
[license_link]: https://opensource.org/licenses/MIT
[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg
[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis
[very_good_cli_link]: https://github.com/VeryGoodOpenSource/very_good_cli

11
analysis_options.yaml Normal file
View File

@@ -0,0 +1,11 @@
include: package:very_good_analysis/analysis_options.yaml
analyzer:
errors:
lines_longer_than_80_chars: ignore
deprecated_member_use: ignore
avoid_catches_without_on_clauses: ignore
exclude:
- lib/l10n/gen/*
linter:
rules:
public_member_api_docs: false

14
android/.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
.cxx/
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
**/*.keystore
**/*.jks

View File

@@ -0,0 +1,106 @@
import java.util.Properties
import java.io.FileInputStream
plugins {
id("com.android.application")
id("kotlin-android")
id("dev.flutter.flutter-gradle-plugin")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
}
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
namespace = "com.adhivasindo.eccp"
compileSdk = flutter.compileSdkVersion
ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
isCoreLibraryDesugaringEnabled = true
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.adhivasindo.eccp"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
create("release") {
if (System.getenv("ANDROID_KEYSTORE_PATH") != null) {
storeFile = file(System.getenv("ANDROID_KEYSTORE_PATH"))
keyAlias = System.getenv("ANDROID_KEYSTORE_ALIAS")
keyPassword = System.getenv("ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
storePassword = System.getenv("ANDROID_KEYSTORE_PASSWORD")
} else {
keyAlias = keystoreProperties["keyAlias"] as String?
keyPassword = keystoreProperties["keyPassword"] as String?
storeFile = keystoreProperties["storeFile"]?.let { file(it) }
storePassword = keystoreProperties["storePassword"] as String?
}
}
}
flavorDimensions += "default"
productFlavors {
create("production") {
dimension = "default"
applicationIdSuffix = ""
manifestPlaceholders["appName"] = "ECCP"
}
create("staging") {
dimension = "default"
applicationIdSuffix = ".stg"
manifestPlaceholders["appName"] = "[STG] ECCP"
}
create("development") {
dimension = "default"
applicationIdSuffix = ".dev"
manifestPlaceholders["appName"] = "[DEV] ECCP"
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro"
)
}
getByName("debug") {
signingConfig = signingConfigs.getByName("debug")
}
}
}
flutter {
source = "../.."
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:2.2.10")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
implementation(platform("com.google.firebase:firebase-bom:34.8.0"))
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-analytics")
}

View File

@@ -0,0 +1,48 @@
{
"project_info": {
"project_number": "256601227152",
"project_id": "eccp-polri",
"storage_bucket": "eccp-polri.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:256601227152:android:2498c93afebf6f5f7a3d15",
"android_client_info": {
"package_name": "com.adhivasindo.eccp"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDC1NUwm7LRzVdHO1UMLHpYdBgvUPMIZsU"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:256601227152:android:de7aa652934174f97a3d15",
"android_client_info": {
"package_name": "com.adhivasindo.eccp.dev"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDC1NUwm7LRzVdHO1UMLHpYdBgvUPMIZsU"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>

View File

@@ -0,0 +1,70 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:label="${appName}"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true">
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_launcher" />
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="true" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="high_importance_channel"/>
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
</intent>
</queries>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,5 @@
package com.adhivasindo.eccp
import io.flutter.embedding.android.FlutterActivity
class MainActivity : FlutterActivity()

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item android:gravity="center" android:drawable="@drawable/ic_launch_image" />
</layer-list>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item android:gravity="center" android:drawable="@drawable/ic_launch_image" />
</layer-list>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="mapbox_access_token" translatable="false" tools:ignore="UnusedResources">
pk.eyJ1Ijoicm9zYXNudWdyYWhhNyIsImEiOiJjbWN6MTJuNnIwZjJ4Mm1zanFtYThtbzNxIn0.qj9V77rs7yCqlkg8Whblgg
</string>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>

25
android/build.gradle.kts Normal file
View File

@@ -0,0 +1,25 @@
allprojects {
repositories {
google()
mavenCentral()
}
}
val newBuildDir: Directory =
rootProject.layout.buildDirectory
.dir("../../build")
.get()
rootProject.layout.buildDirectory.value(newBuildDir)
subprojects {
val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
project.layout.buildDirectory.value(newSubprojectBuildDir)
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory)
}

View File

@@ -0,0 +1,3 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip

View File

@@ -0,0 +1,27 @@
pluginManagement {
val flutterSdkPath = run {
val properties = java.util.Properties()
file("local.properties").inputStream().use { properties.load(it) }
val flutterSdkPath = properties.getProperty("flutter.sdk")
require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
flutterSdkPath
}
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.12.0" apply false
id("org.jetbrains.kotlin.android") version "2.2.10" apply false
id("com.google.gms.google-services") version "4.4.4" apply false
id("com.google.firebase.crashlytics") version "3.0.6" apply false
}
include(":app")

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
assets/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

1
assets/json/loading.json Normal file

File diff suppressed because one or more lines are too long

190
assets/svg/bg_splash.svg Normal file
View File

@@ -0,0 +1,190 @@
<svg width="390" height="844" viewBox="0 0 390 844" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_597_3491)">
<rect width="390" height="857" fill="#DA0108"/>
<path d="M453.432 681.64L148.596 546.18C134.717 540.013 127.636 524.445 132.11 509.93C139.355 486.421 116.781 464.664 93.5545 472.771L72.6612 480.064C47.9285 488.698 21.5271 472.351 18.231 446.363L10.3998 384.617" stroke="url(#paint0_linear_597_3491)"/>
<path d="M446.852 672.601L142.016 537.142C128.136 530.974 121.056 515.406 125.53 500.892C132.775 477.382 110.201 455.625 86.9744 463.733L66.0811 471.026C41.3484 479.659 14.947 463.312 11.6509 437.324L3.81969 375.578" stroke="url(#paint1_linear_597_3491)"/>
<path d="M440.272 663.562L135.436 528.103C121.556 521.935 114.476 506.367 118.95 491.853C126.195 468.343 103.621 446.586 80.3943 454.694L59.5011 461.987C34.7683 470.62 8.36691 454.273 5.07084 428.285L-2.76039 366.539" stroke="url(#paint2_linear_597_3491)"/>
<path d="M433.692 654.524L128.856 519.064C114.976 512.896 107.896 497.329 112.369 482.814C119.615 459.305 97.0406 437.548 73.8142 445.655L52.921 452.948C28.1883 461.581 1.78683 445.234 -1.50924 419.246L-9.34046 357.501" stroke="url(#paint3_linear_597_3491)"/>
<path d="M427.11 645.486L122.275 510.026C108.395 503.858 101.315 488.291 105.788 473.776C113.034 450.267 90.4595 428.51 67.2332 436.617L46.3399 443.91C21.6072 452.543 -4.79423 436.196 -8.09029 410.208L-15.9215 348.463" stroke="url(#paint4_linear_597_3491)"/>
<path d="M420.53 636.446L115.695 500.987C101.815 494.819 94.735 479.252 99.2083 464.737C106.454 441.227 83.8794 419.471 60.6531 427.578L39.7598 434.871C15.0271 443.504 -11.3743 427.157 -14.6704 401.169L-22.5016 339.423" stroke="url(#paint5_linear_597_3491)"/>
<path d="M413.95 627.408L109.115 491.948C95.2351 485.781 88.1549 470.213 92.6282 455.698C99.8738 432.189 77.2994 410.432 54.073 418.539L33.1798 425.832C8.44705 434.466 -17.9544 418.119 -21.2504 392.131L-29.0817 330.385" stroke="url(#paint6_linear_597_3491)"/>
<path d="M407.37 618.369L102.535 482.909C88.655 476.742 81.5748 461.174 86.0482 446.659C93.2938 423.15 70.7193 401.393 47.4929 409.5L26.5997 416.793C1.86697 425.427 -24.5345 409.08 -27.8305 383.092L-35.6618 321.346" stroke="url(#paint7_linear_597_3491)"/>
<path d="M400.79 609.33L95.9546 473.871C82.075 467.703 74.9947 452.135 79.4681 437.621C86.7137 414.111 64.1392 392.354 40.9129 400.462L20.0196 407.755C-4.71311 416.388 -31.1145 400.041 -34.4106 374.053L-42.2418 312.307" stroke="url(#paint8_linear_597_3491)"/>
<path d="M410.217 880.764L107.285 682.792C92.8953 673.388 89.2076 656.267 98.8126 643.457C114.484 622.557 93.9967 595.16 64.9304 598.147L41.3765 600.567C11.0735 603.681 -14.6571 580.907 -9.83004 555.245L1.84241 493.192" stroke="url(#paint9_linear_597_3491)"/>
<path d="M405.707 870.447L102.774 672.475C88.3845 663.071 84.6969 645.951 94.3019 633.141C109.973 612.241 89.4859 584.844 60.4196 587.831L36.8658 590.251C6.56271 593.364 -19.1679 570.591 -14.3408 544.929L-2.66833 482.875" stroke="url(#paint10_linear_597_3491)"/>
<path d="M401.195 860.13L98.2625 662.158C83.8728 652.754 80.1851 635.634 89.7901 622.824C105.461 601.924 84.9742 574.527 55.9079 577.514L32.3541 579.934C2.05099 583.047 -23.6796 560.274 -18.8525 534.612L-7.18005 472.558" stroke="url(#paint11_linear_597_3491)"/>
<path d="M396.684 849.814L93.7518 651.842C79.3621 642.438 75.6744 625.317 85.2794 612.507C100.95 591.607 80.4634 564.211 51.3971 567.197L27.8433 569.617C-2.45975 572.731 -28.1903 549.957 -23.3632 524.296L-11.6908 462.242" stroke="url(#paint12_linear_597_3491)"/>
<path d="M392.174 839.497L89.241 641.525C74.8513 632.121 71.1637 615 80.7687 602.19C96.4396 581.291 75.9527 553.894 46.8864 556.88L23.3326 559.3C-6.97049 562.414 -32.7011 539.641 -27.874 513.979L-16.2015 451.925" stroke="url(#paint13_linear_597_3491)"/>
<path d="M387.663 829.181L84.7303 631.209C70.3406 621.805 66.6529 604.684 76.2579 591.874C91.9289 570.974 71.442 543.577 42.3757 546.564L18.8218 548.984C-11.4812 552.098 -37.2118 529.324 -32.3847 503.662L-20.7123 441.609" stroke="url(#paint14_linear_597_3491)"/>
<path d="M383.152 818.864L80.2196 620.892C65.8298 611.488 62.1422 594.367 71.7472 581.557C87.4181 560.657 66.9312 533.26 37.8649 536.247L14.3111 538.667C-15.992 541.781 -41.7225 519.007 -36.8955 493.345L-25.223 431.292" stroke="url(#paint15_linear_597_3491)"/>
<path d="M378.64 808.547L75.7078 610.575C61.3181 601.171 57.6304 584.051 67.2355 571.241C82.9064 550.341 62.4195 522.944 33.3532 525.931L9.79938 528.351C-20.5037 531.464 -46.2343 508.691 -41.4072 483.029L-29.7347 420.975" stroke="url(#paint16_linear_597_3491)"/>
<path d="M374.13 798.23L71.1971 600.258C56.8074 590.854 53.1197 573.734 62.7247 560.924C78.3957 540.024 57.9088 512.627 28.8425 515.614L5.28864 518.034C-25.0144 521.148 -50.745 498.374 -45.9179 472.712L-34.2455 410.658" stroke="url(#paint17_linear_597_3491)"/>
<path d="M432.907 367.057L171.552 159.771C159.652 150.333 156.683 133.49 164.639 120.552C177.526 99.5967 161.099 72.8921 136.584 74.9431L114.531 76.7881C88.4263 78.9722 66.9431 56.5504 70.2406 30.5626L78.0753 -31.1826" stroke="url(#paint18_linear_597_3491)"/>
<path d="M428.792 356.661L167.437 149.375C155.537 139.937 152.568 123.095 160.524 110.157C173.41 89.2012 156.984 62.4966 132.469 64.5476L110.416 66.3926C84.3111 68.5767 62.8278 46.1549 66.1254 20.1671L73.9601 -41.5782" stroke="url(#paint19_linear_597_3491)"/>
<path d="M424.677 346.266L163.321 138.98C151.421 129.542 148.453 112.699 156.409 99.7612C169.295 78.8057 152.868 52.1011 128.353 54.1521L106.301 55.9971C80.1958 58.1812 58.7126 35.7594 62.0101 9.7716L69.8448 -51.9737" stroke="url(#paint20_linear_597_3491)"/>
<path d="M420.562 335.87L159.207 128.584C147.307 119.146 144.338 102.304 152.294 89.3657C165.181 68.4101 148.754 41.7056 124.239 43.7566L102.187 45.6016C76.0816 47.7857 54.5983 25.3639 57.8959 -0.623906L65.7306 -62.3692" stroke="url(#paint21_linear_597_3491)"/>
<path d="M416.447 325.475L155.092 118.189C143.192 108.751 140.223 91.908 148.179 78.9702C161.066 58.0146 144.639 31.3101 120.124 33.3611L98.0713 35.2061C71.9663 37.3902 50.4831 14.9684 53.7806 -11.0194L61.6154 -72.7647" stroke="url(#paint22_linear_597_3491)"/>
<path d="M412.333 315.079L150.978 107.793C139.078 98.3546 136.109 81.512 144.065 68.5742C156.951 47.6186 140.525 20.9141 116.01 22.9651L93.9571 24.8101C67.8521 26.9942 46.3688 4.57241 49.6664 -21.4154L57.5011 -83.1607" stroke="url(#paint23_linear_597_3491)"/>
<path d="M408.218 304.683L146.862 97.3972C134.962 87.9591 131.994 71.1165 139.95 58.1787C152.836 37.2231 136.409 10.5186 111.894 12.5696L89.8418 14.4146C63.7368 16.5987 42.2536 -5.82309 45.5511 -31.8109L53.3859 -93.5562" stroke="url(#paint24_linear_597_3491)"/>
<path d="M404.102 294.288L142.747 87.0017C130.847 77.5636 127.879 60.721 135.834 47.7832C148.721 26.8276 132.294 0.123045 107.779 2.17408L85.7266 4.01909C59.6216 6.20315 38.1384 -16.2186 41.4359 -42.2064L49.2706 -103.952" stroke="url(#paint25_linear_597_3491)"/>
<path d="M399.988 283.892L138.633 76.6061C126.733 67.1681 123.764 50.3255 131.72 37.3877C144.607 16.4321 128.18 -10.2725 103.665 -8.22143L81.6123 -6.37642C55.5074 -4.19236 34.0241 -26.6141 37.3216 -52.6019L45.1564 -114.347" stroke="url(#paint26_linear_597_3491)"/>
<path d="M440.275 492.237L125.316 314.019C110.355 305.553 105.581 288.703 114.348 275.306C128.652 253.448 106.457 227.416 77.6411 232.253L54.2899 236.172C24.2476 241.215 -2.88504 220.132 0.293063 194.214L7.9781 131.541" stroke="url(#paint27_linear_597_3491)"/>
<path d="M435.115 482.23L120.156 304.012C105.195 295.546 100.421 278.696 109.188 265.299C123.492 243.44 101.297 217.408 72.4809 222.245L49.1298 226.165C19.0875 231.208 -8.04519 210.124 -4.86709 184.206L2.81794 121.534" stroke="url(#paint28_linear_597_3491)"/>
<path d="M429.954 472.222L114.994 294.004C100.033 285.538 95.2598 268.688 104.027 255.291C118.331 233.433 96.136 207.4 67.3198 212.237L43.9686 216.157C13.9263 221.2 -13.2063 200.116 -10.0282 174.199L-2.34319 111.526" stroke="url(#paint29_linear_597_3491)"/>
<path d="M424.793 462.215L109.834 283.997C94.8733 275.531 90.0996 258.681 98.8668 245.283C113.171 223.425 90.9758 197.393 62.1596 202.23L38.8085 206.15C8.76617 211.193 -18.3665 190.109 -15.1884 164.191L-7.50335 101.519" stroke="url(#paint30_linear_597_3491)"/>
<path d="M419.632 452.207L104.673 273.989C89.7122 265.523 84.9385 248.673 93.7057 235.276C108.01 213.418 85.8147 187.385 56.9985 192.222L33.6474 196.142C3.60504 201.185 -23.5276 180.101 -20.3495 154.183L-12.6645 91.5109" stroke="url(#paint31_linear_597_3491)"/>
<path d="M414.471 442.2L99.5121 263.981C84.5511 255.516 79.7774 238.666 88.5445 225.268C102.849 203.41 80.6535 177.378 51.8374 182.215L28.4862 186.135C-1.5561 191.177 -28.6887 170.094 -25.5106 144.176L-17.8256 81.5036" stroke="url(#paint32_linear_597_3491)"/>
<path d="M409.311 432.193L94.3519 253.974C79.3909 245.509 74.6172 228.658 83.3844 215.261C97.6884 193.403 75.4934 167.371 46.6772 172.208L23.3261 176.127C-6.71625 181.17 -33.8489 160.087 -30.6708 134.169L-22.9858 71.4963" stroke="url(#paint33_linear_597_3491)"/>
<path d="M404.15 422.185L89.1908 243.967C74.2298 235.501 69.4561 218.651 78.2232 205.254C92.5272 183.396 70.3323 157.363 41.5161 162.2L18.1649 166.12C-11.8774 171.163 -39.01 150.079 -35.8319 124.161L-28.1469 61.489" stroke="url(#paint34_linear_597_3491)"/>
<path d="M398.99 412.177L84.0306 233.959C69.0696 225.493 64.2959 208.643 73.0631 195.246C87.3671 173.388 65.1721 147.356 36.3559 152.193L13.0048 156.112C-17.0375 161.155 -44.1702 140.071 -40.9921 114.154L-33.3071 51.4811" stroke="url(#paint35_linear_597_3491)"/>
</g>
<defs>
<linearGradient id="paint0_linear_597_3491" x1="243.351" y1="516.072" x2="184.427" y2="603.962" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint1_linear_597_3491" x1="236.771" y1="507.033" x2="177.847" y2="594.923" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint2_linear_597_3491" x1="230.191" y1="497.994" x2="171.267" y2="585.884" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint3_linear_597_3491" x1="223.611" y1="488.955" x2="164.687" y2="576.845" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint4_linear_597_3491" x1="217.03" y1="479.917" x2="158.106" y2="567.807" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint5_linear_597_3491" x1="210.45" y1="470.878" x2="151.526" y2="558.768" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint6_linear_597_3491" x1="203.87" y1="461.84" x2="144.945" y2="549.73" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint7_linear_597_3491" x1="197.29" y1="452.801" x2="138.365" y2="540.691" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint8_linear_597_3491" x1="190.71" y1="443.762" x2="131.785" y2="531.652" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint9_linear_597_3491" x1="224.877" y1="672.616" x2="141.906" y2="760.04" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint10_linear_597_3491" x1="220.366" y1="662.3" x2="137.396" y2="749.724" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint11_linear_597_3491" x1="215.854" y1="651.983" x2="132.884" y2="739.407" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint12_linear_597_3491" x1="211.344" y1="641.667" x2="128.373" y2="729.091" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint13_linear_597_3491" x1="206.833" y1="631.35" x2="123.862" y2="718.774" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint14_linear_597_3491" x1="202.322" y1="621.033" x2="119.352" y2="708.457" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint15_linear_597_3491" x1="197.812" y1="610.716" x2="114.841" y2="698.14" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint16_linear_597_3491" x1="193.3" y1="600.4" x2="110.329" y2="687.824" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint17_linear_597_3491" x1="188.789" y1="590.083" x2="105.818" y2="677.507" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint18_linear_597_3491" x1="270.823" y1="154.276" x2="191.82" y2="224.668" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint19_linear_597_3491" x1="266.708" y1="143.88" x2="187.704" y2="214.273" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint20_linear_597_3491" x1="262.593" y1="133.485" x2="183.589" y2="203.877" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint21_linear_597_3491" x1="258.479" y1="123.089" x2="179.475" y2="193.482" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint22_linear_597_3491" x1="254.363" y1="112.694" x2="175.36" y2="183.086" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint23_linear_597_3491" x1="250.249" y1="102.298" x2="171.245" y2="172.69" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint24_linear_597_3491" x1="246.134" y1="91.9024" x2="167.13" y2="162.295" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint25_linear_597_3491" x1="242.019" y1="81.5069" x2="163.015" y2="151.899" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint26_linear_597_3491" x1="237.904" y1="71.1113" x2="158.901" y2="141.504" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint27_linear_597_3491" x1="242.018" y1="296.354" x2="164.801" y2="388.899" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint28_linear_597_3491" x1="236.858" y1="286.346" x2="159.64" y2="378.891" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint29_linear_597_3491" x1="231.696" y1="276.338" x2="154.479" y2="368.884" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint30_linear_597_3491" x1="226.536" y1="266.331" x2="149.319" y2="358.876" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint31_linear_597_3491" x1="221.375" y1="256.323" x2="144.158" y2="348.868" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint32_linear_597_3491" x1="216.214" y1="246.316" x2="138.997" y2="338.861" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint33_linear_597_3491" x1="211.054" y1="236.309" x2="133.837" y2="328.854" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint34_linear_597_3491" x1="205.893" y1="226.301" x2="128.676" y2="318.846" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<linearGradient id="paint35_linear_597_3491" x1="200.733" y1="216.293" x2="123.515" y2="308.839" gradientUnits="userSpaceOnUse">
<stop stop-color="#CC0108"/>
<stop offset="1" stop-color="#AE0006"/>
</linearGradient>
<clipPath id="clip0_597_3491">
<rect width="390" height="857" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

3
assets/svg/ic-book.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2.66699 13.0002V3.00016C2.66699 2.55814 2.84259 2.13421 3.15515 1.82165C3.46771 1.50909 3.89163 1.3335 4.33366 1.3335H12.667C12.8438 1.3335 13.0134 1.40373 13.1384 1.52876C13.2634 1.65378 13.3337 1.82335 13.3337 2.00016V14.0002C13.3337 14.177 13.2634 14.3465 13.1384 14.4716C13.0134 14.5966 12.8438 14.6668 12.667 14.6668H4.33366C3.89163 14.6668 3.46771 14.4912 3.15515 14.1787C2.84259 13.8661 2.66699 13.4422 2.66699 13.0002ZM2.66699 13.0002C2.66699 12.5581 2.84259 12.1342 3.15515 11.8217C3.46771 11.5091 3.89163 11.3335 4.33366 11.3335H13.3337" stroke="#155DFC" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 746 B

View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 8C2 9.18669 2.35189 10.3467 3.01118 11.3334C3.67047 12.3201 4.60754 13.0892 5.7039 13.5433C6.80026 13.9974 8.00666 14.1162 9.17054 13.8847C10.3344 13.6532 11.4035 13.0818 12.2426 12.2426C13.0818 11.4035 13.6532 10.3344 13.8847 9.17054C14.1162 8.00666 13.9974 6.80026 13.5433 5.7039C13.0892 4.60754 12.3201 3.67047 11.3334 3.01118C10.3467 2.35189 9.18669 2 8 2C6.32263 2.00631 4.71265 2.66082 3.50667 3.82667L2 5.33333M2 5.33333V2M2 5.33333H5.33333M8 4.66667V8L10.6667 9.33333" stroke="#9810FA" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 677 B

9
assets/svg/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5 4.20996L12 6.80996L16.5 4.20996M7.5 19.79V14.6L3 12M21 12L16.5 14.6V19.79M3.27002 6.95996L12 12.01L20.73 6.95996M12 22.08V12M21 15.9999V7.9999C20.9996 7.64918 20.9071 7.30471 20.7315 7.00106C20.556 6.69742 20.3037 6.44526 20 6.2699L13 2.2699C12.696 2.09437 12.3511 2.00195 12 2.00195C11.6489 2.00195 11.304 2.09437 11 2.2699L4 6.2699C3.69626 6.44526 3.44398 6.69742 3.26846 7.00106C3.09294 7.30471 3.00036 7.64918 3 7.9999V15.9999C3.00036 16.3506 3.09294 16.6951 3.26846 16.9987C3.44398 17.3024 3.69626 17.5545 4 17.7299L11 21.7299C11.304 21.9054 11.6489 21.9979 12 21.9979C12.3511 21.9979 12.696 21.9054 13 21.7299L20 17.7299C20.3037 17.5545 20.556 17.3024 20.7315 16.9987C20.9071 16.6951 20.9996 16.3506 21 15.9999Z" stroke="#DA0108" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 921 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5 4.20996L12 6.80996L16.5 4.20996M7.5 19.79V14.6L3 12M21 12L16.5 14.6V19.79M3.27002 6.95996L12 12.01L20.73 6.95996M12 22.08V12M21 15.9999V7.9999C20.9996 7.64918 20.9071 7.30471 20.7315 7.00106C20.556 6.69742 20.3037 6.44526 20 6.2699L13 2.2699C12.696 2.09437 12.3511 2.00195 12 2.00195C11.6489 2.00195 11.304 2.09437 11 2.2699L4 6.2699C3.69626 6.44526 3.44398 6.69742 3.26846 7.00106C3.09294 7.30471 3.00036 7.64918 3 7.9999V15.9999C3.00036 16.3506 3.09294 16.6951 3.26846 16.9987C3.44398 17.3024 3.69626 17.5545 4 17.7299L11 21.7299C11.304 21.9054 11.6489 21.9979 12 21.9979C12.3511 21.9979 12.696 21.9054 13 21.7299L20 17.7299C20.3037 17.5545 20.556 17.3024 20.7315 16.9987C20.9071 16.6951 20.9996 16.3506 21 15.9999Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 921 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 21V13C15 12.7348 14.8946 12.4804 14.7071 12.2929C14.5196 12.1054 14.2652 12 14 12H10C9.73478 12 9.48043 12.1054 9.29289 12.2929C9.10536 12.4804 9 12.7348 9 13V21M3 9.99999C2.99993 9.70906 3.06333 9.42161 3.18579 9.15771C3.30824 8.8938 3.4868 8.65979 3.709 8.47199L10.709 2.47199C11.07 2.1669 11.5274 1.99951 12 1.99951C12.4726 1.99951 12.93 2.1669 13.291 2.47199L20.291 8.47199C20.5132 8.65979 20.6918 8.8938 20.8142 9.15771C20.9367 9.42161 21.0001 9.70906 21 9.99999V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V9.99999Z" stroke="#DA0108" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 834 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 21V13C15 12.7348 14.8946 12.4804 14.7071 12.2929C14.5196 12.1054 14.2652 12 14 12H10C9.73478 12 9.48043 12.1054 9.29289 12.2929C9.10536 12.4804 9 12.7348 9 13V21M3 9.99999C2.99993 9.70906 3.06333 9.42161 3.18579 9.15771C3.30824 8.8938 3.4868 8.65979 3.709 8.47199L10.709 2.47199C11.07 2.1669 11.5274 1.99951 12 1.99951C12.4726 1.99951 12.93 2.1669 13.291 2.47199L20.291 8.47199C20.5132 8.65979 20.6918 8.8938 20.8142 9.15771C20.9367 9.42161 21.0001 9.70906 21 9.99999V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V9.99999Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 834 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2679 21C10.4435 21.304 10.696 21.5565 11 21.732C11.304 21.9075 11.6489 21.9999 11.9999 21.9999C12.351 21.9999 12.6959 21.9075 12.9999 21.732C13.3039 21.5565 13.5564 21.304 13.7319 21M3.262 15.326C3.13137 15.4692 3.04516 15.6472 3.01386 15.8385C2.98256 16.0298 3.00752 16.226 3.08571 16.4034C3.1639 16.5807 3.29194 16.7316 3.45426 16.8375C3.61658 16.9434 3.80618 16.9999 4 17H20C20.1938 17.0001 20.3834 16.9438 20.5459 16.8381C20.7083 16.7324 20.8365 16.5817 20.9149 16.4045C20.9933 16.2273 21.0185 16.0311 20.9874 15.8398C20.9564 15.6485 20.8704 15.4703 20.74 15.327C19.41 13.956 18 12.499 18 8C18 6.4087 17.3679 4.88258 16.2426 3.75736C15.1174 2.63214 13.5913 2 12 2C10.4087 2 8.88258 2.63214 7.75736 3.75736C6.63214 4.88258 6 6.4087 6 8C6 12.499 4.589 13.956 3.262 15.326Z" stroke="#DA0108" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 977 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2679 21C10.4435 21.304 10.696 21.5565 11 21.732C11.304 21.9075 11.6489 21.9999 11.9999 21.9999C12.351 21.9999 12.6959 21.9075 12.9999 21.732C13.3039 21.5565 13.5564 21.304 13.7319 21M3.262 15.326C3.13137 15.4692 3.04516 15.6472 3.01386 15.8385C2.98256 16.0298 3.00752 16.226 3.08571 16.4034C3.1639 16.5807 3.29194 16.7316 3.45426 16.8375C3.61658 16.9434 3.80618 16.9999 4 17H20C20.1938 17.0001 20.3834 16.9438 20.5459 16.8381C20.7083 16.7324 20.8365 16.5817 20.9149 16.4045C20.9933 16.2273 21.0185 16.0311 20.9874 15.8398C20.9564 15.6485 20.8704 15.4703 20.74 15.327C19.41 13.956 18 12.499 18 8C18 6.4087 17.3679 4.88258 16.2426 3.75736C15.1174 2.63214 13.5913 2 12 2C10.4087 2 8.88258 2.63214 7.75736 3.75736C6.63214 4.88258 6 6.4087 6 8C6 12.499 4.589 13.956 3.262 15.326Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 977 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 4H21M14 9H21M14 15H21M14 20H21M4 3H9C9.55228 3 10 3.44772 10 4V9C10 9.55228 9.55228 10 9 10H4C3.44772 10 3 9.55228 3 9V4C3 3.44772 3.44772 3 4 3ZM4 14H9C9.55228 14 10 14.4477 10 15V20C10 20.5523 9.55228 21 9 21H4C3.44772 21 3 20.5523 3 20V15C3 14.4477 3.44772 14 4 14Z" stroke="#DA0108" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 471 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 4H21M14 9H21M14 15H21M14 20H21M4 3H9C9.55228 3 10 3.44772 10 4V9C10 9.55228 9.55228 10 9 10H4C3.44772 10 3 9.55228 3 9V4C3 3.44772 3.44772 3 4 3ZM4 14H9C9.55228 14 10 14.4477 10 15V20C10 20.5523 9.55228 21 9 21H4C3.44772 21 3 20.5523 3 20V15C3 14.4477 3.44772 14 4 14Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 471 B

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6319_36998)">
<path d="M14.7005 6.3C14.5172 6.48693 14.4146 6.73825 14.4146 7C14.4146 7.26175 14.5172 7.51307 14.7005 7.7L16.3005 9.3C16.4874 9.48323 16.7387 9.58586 17.0005 9.58586C17.2622 9.58586 17.5135 9.48323 17.7005 9.3L20.8065 6.195C21.1265 5.873 21.6695 5.975 21.7895 6.413C22.0916 7.51187 22.0745 8.67407 21.7402 9.76359C21.406 10.8531 20.7683 11.8249 19.9019 12.5652C19.0354 13.3056 17.9761 13.7838 16.8477 13.9441C15.7194 14.1043 14.5688 13.9399 13.5305 13.47L5.62047 21.38C5.22264 21.7777 4.68313 22.0011 4.12061 22.001C3.5581 22.0009 3.01866 21.7773 2.62097 21.3795C2.22327 20.9817 1.99991 20.4422 2 19.8796C2.00009 19.3171 2.22364 18.7777 2.62147 18.38L10.5315 10.47C10.0616 9.43171 9.89717 8.28108 10.0574 7.15275C10.2176 6.02442 10.6959 4.96505 11.4362 4.09862C12.1766 3.23218 13.1484 2.59451 14.2379 2.26023C15.3274 1.92594 16.4896 1.90887 17.5885 2.211C18.0265 2.331 18.1285 2.873 17.8075 3.195L14.7005 6.3Z" stroke="#DA0108" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_6319_36998">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.7005 6.3C14.5172 6.48693 14.4146 6.73825 14.4146 7C14.4146 7.26175 14.5172 7.51307 14.7005 7.7L16.3005 9.3C16.4874 9.48323 16.7387 9.58586 17.0005 9.58586C17.2622 9.58586 17.5135 9.48323 17.7005 9.3L20.8065 6.195C21.1265 5.873 21.6695 5.975 21.7895 6.413C22.0916 7.51187 22.0745 8.67407 21.7402 9.76359C21.406 10.8531 20.7683 11.8249 19.9019 12.5652C19.0354 13.3056 17.9761 13.7838 16.8477 13.9441C15.7194 14.1043 14.5688 13.9399 13.5305 13.47L5.62047 21.38C5.22264 21.7777 4.68313 22.0011 4.12061 22.001C3.5581 22.0009 3.01866 21.7773 2.62097 21.3795C2.22327 20.9817 1.99991 20.4422 2 19.8796C2.00009 19.3171 2.22364 18.7777 2.62147 18.38L10.5315 10.47C10.0616 9.43171 9.89717 8.28108 10.0574 7.15275C10.2176 6.02442 10.6959 4.96505 11.4362 4.09862C12.1766 3.23218 13.1484 2.59451 14.2379 2.26023C15.3274 1.92594 16.4896 1.90887 17.5885 2.211C18.0265 2.331 18.1285 2.873 17.8075 3.195L14.7005 6.3Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z" stroke="#DA0108" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 473 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z" stroke="#8C8C8C" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 473 B

View File

@@ -0,0 +1,11 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_898_2274)">
<path d="M9.99967 1.3335H5.99967C5.63148 1.3335 5.33301 1.63197 5.33301 2.00016V3.3335C5.33301 3.70169 5.63148 4.00016 5.99967 4.00016H9.99967C10.3679 4.00016 10.6663 3.70169 10.6663 3.3335V2.00016C10.6663 1.63197 10.3679 1.3335 9.99967 1.3335Z" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.667 2.6665H12.0003C12.3539 2.6665 12.6931 2.80698 12.9431 3.05703C13.1932 3.30708 13.3337 3.64622 13.3337 3.99984V13.3332C13.3337 13.6868 13.1932 14.0259 12.9431 14.276C12.6931 14.526 12.3539 14.6665 12.0003 14.6665H4.00033C3.6467 14.6665 3.30756 14.526 3.05752 14.276C2.80747 14.0259 2.66699 13.6868 2.66699 13.3332V3.99984C2.66699 3.64622 2.80747 3.30708 3.05752 3.05703C3.30756 2.80698 3.6467 2.6665 4.00033 2.6665H5.33366" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_898_2274">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,7 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 11.3333L3.33333 12.6667L6 10" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2 4.66683L3.33333 6.00016L6 3.3335" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.6665 4H13.9998" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.6665 8H13.9998" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.6665 12H13.9998" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 721 B

View File

@@ -0,0 +1,11 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_898_2814)">
<path d="M14.5341 6.66666C14.8385 8.16086 14.6215 9.71427 13.9193 11.0679C13.2171 12.4214 12.072 13.4934 10.6751 14.1049C9.27816 14.7164 7.71382 14.8305 6.24293 14.4282C4.77205 14.026 3.48353 13.1316 2.59225 11.8943C1.70097 10.657 1.26081 9.15148 1.34518 7.62892C1.42954 6.10635 2.03332 4.65872 3.05583 3.52744C4.07835 2.39616 5.45779 1.64961 6.96411 1.4123C8.47043 1.17498 10.0126 1.46123 11.3334 2.22333" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.33317L8 9.33317L14.6667 2.6665" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_898_2814">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 878 B

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.37468 8.23224C1.31912 8.08256 1.31912 7.91792 1.37468 7.76824C1.91581 6.45614 2.83435 5.33427 4.01386 4.54484C5.19336 3.75541 6.58071 3.33398 8.00001 3.33398C9.41932 3.33398 10.8067 3.75541 11.9862 4.54484C13.1657 5.33427 14.0842 6.45614 14.6253 7.76824C14.6809 7.91792 14.6809 8.08256 14.6253 8.23224C14.0842 9.54434 13.1657 10.6662 11.9862 11.4556C10.8067 12.2451 9.41932 12.6665 8.00001 12.6665C6.58071 12.6665 5.19336 12.2451 4.01386 11.4556C2.83435 10.6662 1.91581 9.54434 1.37468 8.23224Z" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8 10C9.10457 10 10 9.10457 10 8C10 6.89543 9.10457 6 8 6C6.89543 6 6 6.89543 6 8C6 9.10457 6.89543 10 8 10Z" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_898_2269)">
<path d="M13.3337 8.66664C13.3337 12 11.0003 13.6666 8.22699 14.6333C8.08177 14.6825 7.92402 14.6802 7.78033 14.6266C5.00033 13.6666 2.66699 12 2.66699 8.66664V3.99997C2.66699 3.82316 2.73723 3.65359 2.86225 3.52857C2.98728 3.40355 3.15685 3.33331 3.33366 3.33331C4.66699 3.33331 6.33366 2.53331 7.49366 1.51997C7.6349 1.39931 7.81456 1.33301 8.00033 1.33301C8.18609 1.33301 8.36576 1.39931 8.50699 1.51997C9.67366 2.53997 11.3337 3.33331 12.667 3.33331C12.8438 3.33331 13.0134 3.40355 13.1384 3.52857C13.2634 3.65359 13.3337 3.82316 13.3337 3.99997V8.66664Z" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_898_2269">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 896 B

View File

@@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_898_2280)">
<path d="M9.7999 4.20015C9.67775 4.32477 9.60933 4.49231 9.60933 4.66682C9.60933 4.84132 9.67775 5.00886 9.7999 5.13348L10.8666 6.20015C10.9912 6.3223 11.1587 6.39072 11.3332 6.39072C11.5077 6.39072 11.6753 6.3223 11.7999 6.20015L14.3132 3.68682C14.6485 4.42761 14.75 5.25297 14.6042 6.05291C14.4585 6.85285 14.0724 7.58938 13.4974 8.16434C12.9225 8.73929 12.1859 9.12537 11.386 9.27112C10.5861 9.41687 9.7607 9.31537 9.0199 8.98015L4.41324 13.5868C4.14802 13.852 3.78831 14.001 3.41324 14.001C3.03816 14.001 2.67845 13.852 2.41324 13.5868C2.14802 13.3216 1.99902 12.9619 1.99902 12.5868C1.99902 12.2117 2.14802 11.852 2.41324 11.5868L7.0199 6.98015C6.68468 6.23936 6.58318 5.41399 6.72893 4.61405C6.87468 3.81411 7.26076 3.07759 7.83572 2.50263C8.41067 1.92767 9.1472 1.5416 9.94714 1.39584C10.7471 1.25009 11.5724 1.35159 12.3132 1.68682L9.80657 4.19348L9.7999 4.20015Z" stroke="#525252" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_898_2280">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/webp/logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

20
coverage_badge.svg Normal file
View File

@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="102" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1" />
<stop offset="1" stop-opacity=".1" />
</linearGradient>
<clipPath id="a">
<rect width="102" height="20" rx="3" fill="#fff" />
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h59v20H0z" />
<path fill="#44cc11" d="M59 0h43v20H59z" />
<path fill="url(#b)" d="M0 0h102v20H0z" />
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
<text x="305" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="490">coverage</text>
<text x="305" y="140" transform="scale(.1)" textLength="490">coverage</text>
<text x="795" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">100%</text>
<text x="795" y="140" transform="scale(.1)" textLength="330">100%</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

3
devtools_options.yaml Normal file
View File

@@ -0,0 +1,3 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:

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