Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/st/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion lib/core/platform/android_foreground_runtime.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'dart:ui';

import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
Expand Down Expand Up @@ -210,6 +211,7 @@ class AndroidForegroundRuntime {

@pragma('vm:entry-point')
void startForegroundRuntimeCallback() {
DartPluginRegistrant.ensureInitialized();
FlutterForegroundTask.setTaskHandler(KickForegroundTaskHandler());
}

Expand All @@ -236,7 +238,9 @@ class KickForegroundTaskHandler extends TaskHandler {
_notificationModeOAuth => (authNotificationTitle, l10n.runtimeNotificationReturn),
_ => (l10n.runtimeNotificationTitle, l10n.runtimeNotificationActive),
};
unawaited(FlutterForegroundTask.updateService(notificationTitle: title, notificationText: text));
unawaited(
FlutterForegroundTask.updateService(notificationTitle: title, notificationText: text),
);
}

@override
Expand Down
59 changes: 59 additions & 0 deletions lib/core/theme/kick_icons.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import 'package:flutter/widgets.dart';
import 'package:material_symbols_icons/symbols.dart';

class KickIcons {
const KickIcons._();

static const IconData home = Symbols.home_rounded;
static const IconData accounts = Symbols.groups_2_rounded;
static const IconData settings = Symbols.tune_rounded;
static const IconData logs = Symbols.article_rounded;

static const IconData add = Symbols.add_rounded;
static const IconData addAccount = Symbols.person_add_alt_rounded;
static const IconData apiKey = Symbols.key_rounded;
static const IconData back = Symbols.arrow_back_rounded;
static const IconData backup = Symbols.settings_backup_restore_rounded;
static const IconData badge = Symbols.badge_rounded;
static const IconData check = Symbols.check_circle_rounded;
static const IconData clear = Symbols.close_rounded;
static const IconData cloudOff = Symbols.cloud_off_rounded;
static const IconData copy = Symbols.content_copy_rounded;
static const IconData copyAll = Symbols.copy_all_rounded;
static const IconData data = Symbols.data_object_rounded;
static const IconData deleteSweep = Symbols.delete_sweep_rounded;
static const IconData download = Symbols.download_rounded;
static const IconData edit = Symbols.edit_rounded;
static const IconData error = Symbols.error_rounded;
static const IconData expandMore = Symbols.expand_more_rounded;
static const IconData filter = Symbols.filter_alt_rounded;
static const IconData hub = Symbols.hub_rounded;
static const IconData hourglass = Symbols.hourglass_top_rounded;
static const IconData info = Symbols.info_rounded;
static const IconData label = Symbols.label_rounded;
static const IconData link = Symbols.link_rounded;
static const IconData lowPriority = Symbols.low_priority_rounded;
static const IconData mail = Symbols.mail_outline_rounded;
static const IconData manageAccounts = Symbols.manage_accounts_rounded;
static const IconData more = Symbols.more_horiz_rounded;
static const IconData openInNew = Symbols.open_in_new_rounded;
static const IconData pause = Symbols.pause_rounded;
static const IconData play = Symbols.play_arrow_rounded;
static const IconData queryStats = Symbols.query_stats_rounded;
static const IconData refresh = Symbols.refresh_rounded;
static const IconData report = Symbols.report_gmailerrorred_rounded;
static const IconData restart = Symbols.restart_alt_rounded;
static const IconData rocket = Symbols.rocket_launch_rounded;
static const IconData search = Symbols.search_rounded;
static const IconData security = Symbols.security_rounded;
static const IconData share = Symbols.share_rounded;
static const IconData sort = Symbols.sort_rounded;
static const IconData speed = Symbols.speed_rounded;
static const IconData schedule = Symbols.schedule_rounded;
static const IconData sync = Symbols.sync_rounded;
static const IconData update = Symbols.update_rounded;
static const IconData unfoldLess = Symbols.unfold_less_rounded;
static const IconData warning = Symbols.warning_amber_rounded;
static const IconData verified = Symbols.verified_rounded;
static const IconData verifiedUser = Symbols.verified_user_rounded;
}
29 changes: 17 additions & 12 deletions lib/core/theme/kick_theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:ui' show lerpDouble;

import 'package:dynamic_color/dynamic_color.dart';
import 'package:flutter/material.dart';
import 'package:m3e_collection/m3e_collection.dart';

class KickThemeBootstrapData {
const KickThemeBootstrapData({
Expand Down Expand Up @@ -133,8 +134,8 @@ class KickThemeTokens extends ThemeExtension<KickThemeTokens> {
static const fallback = KickThemeTokens(
pageGutter: 24,
sectionGap: 20,
panelRadius: 28,
heroRadius: 36,
panelRadius: 24,
heroRadius: 32,
pillRadius: 18,
shortDuration: Duration(milliseconds: 220),
mediumDuration: Duration(milliseconds: 380),
Expand Down Expand Up @@ -212,46 +213,46 @@ class KickThemeData {
final textTheme = base.textTheme.copyWith(
displayLarge: base.textTheme.displayLarge?.copyWith(
fontWeight: FontWeight.w700,
letterSpacing: -1.2,
letterSpacing: 0,
height: 0.98,
),
displayMedium: base.textTheme.displayMedium?.copyWith(
fontWeight: FontWeight.w700,
letterSpacing: -0.9,
letterSpacing: 0,
height: 1,
),
displaySmall: base.textTheme.displaySmall?.copyWith(
fontWeight: FontWeight.w700,
letterSpacing: -0.6,
letterSpacing: 0,
height: 1.02,
),
headlineLarge: base.textTheme.headlineLarge?.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: -0.4,
letterSpacing: 0,
height: 1.06,
),
headlineMedium: base.textTheme.headlineMedium?.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: -0.2,
letterSpacing: 0,
height: 1.08,
),
titleLarge: base.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: -0.1,
letterSpacing: 0,
),
titleMedium: base.textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w500,
letterSpacing: -0.1,
letterSpacing: 0,
),
bodyLarge: base.textTheme.bodyLarge?.copyWith(height: 1.45),
bodyMedium: base.textTheme.bodyMedium?.copyWith(height: 1.4),
labelLarge: base.textTheme.labelLarge?.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: 0.24,
letterSpacing: 0,
),
labelMedium: base.textTheme.labelMedium?.copyWith(
fontWeight: FontWeight.w500,
letterSpacing: 0.16,
letterSpacing: 0,
),
);

Expand All @@ -262,7 +263,7 @@ class KickThemeData {
borderRadius: BorderRadius.circular(tokens.heroRadius),
);

return base.copyWith(
final theme = base.copyWith(
extensions: const [tokens],
textTheme: textTheme,
scaffoldBackgroundColor: scheme.surface,
Expand Down Expand Up @@ -464,6 +465,10 @@ class KickThemeData {
}),
),
);
final expressiveTheme = withM3ETheme(theme, override: M3ETheme.defaults(scheme));
return expressiveTheme.copyWith(
extensions: <ThemeExtension<dynamic>>[tokens, M3ETheme.defaults(scheme)],
);
}

static Color _layeredColor(Color tint, Color surface, double opacity) {
Expand Down
Loading
Loading