fix: custom font doesn't apply to settings page (#7801)
* fix: custom font doesn't apply to settings page * chore: update settings page icons * fix: add try catch in http services
@ -316,9 +316,12 @@ class EditorStyleCustomizer {
|
||||
}
|
||||
|
||||
TextStyle baseTextStyle(String? fontFamily, {FontWeight? fontWeight}) {
|
||||
if (fontFamily == null || fontFamily == defaultFontFamily) {
|
||||
if (fontFamily == null) {
|
||||
return TextStyle(fontWeight: fontWeight);
|
||||
} else if (fontFamily == defaultFontFamily) {
|
||||
return TextStyle(fontFamily: fontFamily, fontWeight: fontWeight);
|
||||
}
|
||||
|
||||
try {
|
||||
return getGoogleFontSafely(fontFamily, fontWeight: fontWeight);
|
||||
} on Exception {
|
||||
|
@ -7,11 +7,13 @@ import 'package:appflowy/shared/feature_flags.dart';
|
||||
import 'package:appflowy/shared/icon_emoji_picker/icon_picker.dart';
|
||||
import 'package:appflowy/startup/startup.dart';
|
||||
import 'package:appflowy/user/application/user_settings_service.dart';
|
||||
import 'package:appflowy/util/string_extension.dart';
|
||||
import 'package:appflowy/workspace/application/action_navigation/action_navigation_bloc.dart';
|
||||
import 'package:appflowy/workspace/application/action_navigation/navigation_action.dart';
|
||||
import 'package:appflowy/workspace/application/command_palette/command_palette_bloc.dart';
|
||||
import 'package:appflowy/workspace/application/notification/notification_service.dart';
|
||||
import 'package:appflowy/workspace/application/settings/appearance/appearance_cubit.dart';
|
||||
import 'package:appflowy/workspace/application/settings/appearance/base_appearance.dart';
|
||||
import 'package:appflowy/workspace/application/settings/notifications/notification_settings_cubit.dart';
|
||||
import 'package:appflowy/workspace/application/sidebar/rename_view/rename_view_bloc.dart';
|
||||
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
|
||||
@ -238,11 +240,13 @@ class _ApplicationWidgetState extends State<ApplicationWidget> {
|
||||
routerConfig: routerConfig,
|
||||
builder: (context, child) {
|
||||
final brightness = Theme.of(context).brightness;
|
||||
final fontFamily =
|
||||
state.font.orDefault(defaultFontFamily);
|
||||
|
||||
return AppFlowyTheme(
|
||||
data: brightness == Brightness.light
|
||||
? themeBuilder.light()
|
||||
: themeBuilder.dark(),
|
||||
? themeBuilder.light(fontFamily: fontFamily)
|
||||
: themeBuilder.dark(fontFamily: fontFamily),
|
||||
child: MediaQuery(
|
||||
// use the 1.0 as the textScaleFactor to avoid the text size
|
||||
// affected by the system setting.
|
||||
|
@ -120,10 +120,16 @@ class PasswordHttpService {
|
||||
errorMessage: 'Failed to check password status',
|
||||
);
|
||||
|
||||
return result.fold(
|
||||
(data) => FlowyResult.success(data['has_password'] ?? false),
|
||||
(error) => FlowyResult.failure(error),
|
||||
);
|
||||
try {
|
||||
return result.fold(
|
||||
(data) => FlowyResult.success(data['has_password'] ?? false),
|
||||
(error) => FlowyResult.failure(error),
|
||||
);
|
||||
} catch (e) {
|
||||
return FlowyResult.failure(
|
||||
FlowyError(msg: 'Failed to check password status: $e'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Makes a request to the specified endpoint with the given body
|
||||
|
@ -64,10 +64,16 @@ class MemberHttpService {
|
||||
errorMessage: 'Failed to get invite code',
|
||||
);
|
||||
|
||||
return result.fold(
|
||||
(data) => FlowyResult.success(data['code'] as String),
|
||||
(error) => FlowyResult.failure(error),
|
||||
);
|
||||
try {
|
||||
return result.fold(
|
||||
(data) => FlowyResult.success(data['code'] as String),
|
||||
(error) => FlowyResult.failure(error),
|
||||
);
|
||||
} catch (e) {
|
||||
return FlowyResult.failure(
|
||||
FlowyError(msg: 'Failed to get invite code: $e'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Deletes the invite code for a workspace
|
||||
|
@ -92,7 +92,7 @@ class WorkspaceMemberBloc
|
||||
final inviteLink = await _buildInviteLink(inviteCode: s);
|
||||
emit(state.copyWith(inviteLink: inviteLink));
|
||||
},
|
||||
(e) => Log.error('Failed to get invite code: ${e.msg}', e),
|
||||
(e) => Log.info('Failed to get invite code: ${e.msg}', e),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
|
@ -52,14 +52,14 @@ class SettingsMenu extends StatelessWidget {
|
||||
page: SettingsPage.account,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_accountPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_account_m),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_user_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.workspace,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_workspacePage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_workplace_m),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_workspace_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
if (FeatureFlag.membersSettings.isOn &&
|
||||
@ -68,35 +68,35 @@ class SettingsMenu extends StatelessWidget {
|
||||
page: SettingsPage.member,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_appearance_members_label.tr(),
|
||||
icon: const Icon(Icons.people),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_users_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.manageData,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_manageDataPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_data_m),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_database_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.notifications,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_menu_notifications.tr(),
|
||||
icon: const Icon(Icons.notifications_outlined),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_bell_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.cloud,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_menu_cloudSettings.tr(),
|
||||
icon: const Icon(Icons.sync),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_cloud_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.shortcuts,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_shortcutsPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_shortcuts_m),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_keyboard_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
@ -104,7 +104,7 @@ class SettingsMenu extends StatelessWidget {
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_aiPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(
|
||||
FlowySvgs.ai_summary_generate_s,
|
||||
FlowySvgs.settings_page_ai_m,
|
||||
size: Size.square(24),
|
||||
),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
@ -114,7 +114,7 @@ class SettingsMenu extends StatelessWidget {
|
||||
page: SettingsPage.sites,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_sites_title.tr(),
|
||||
icon: const Icon(Icons.web),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_earth_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
if (FeatureFlag.planBilling.isOn && isBillingEnabled) ...[
|
||||
@ -122,14 +122,15 @@ class SettingsMenu extends StatelessWidget {
|
||||
page: SettingsPage.plan,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_planPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_plan_m),
|
||||
icon: const FlowySvg(FlowySvgs.settings_page_plan_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
SettingsMenuElement(
|
||||
page: SettingsPage.billing,
|
||||
selectedPage: currentPage,
|
||||
label: LocaleKeys.settings_billingPage_menuLabel.tr(),
|
||||
icon: const FlowySvg(FlowySvgs.settings_billing_m),
|
||||
icon:
|
||||
const FlowySvg(FlowySvgs.settings_page_credit_card_m),
|
||||
changeSelectedPage: changeSelectedPage,
|
||||
),
|
||||
],
|
||||
|
@ -17,8 +17,10 @@ import 'primitive.dart';
|
||||
|
||||
class AppFlowyDefaultTheme implements AppFlowyThemeBuilder {
|
||||
@override
|
||||
AppFlowyThemeData light() {
|
||||
final textStyle = AppFlowyBaseTextStyle();
|
||||
AppFlowyThemeData light({
|
||||
String? fontFamily,
|
||||
}) {
|
||||
final textStyle = AppFlowyBaseTextStyle.customFontFamily(fontFamily ?? '');
|
||||
final borderRadius = AppFlowySharedTokens.buildBorderRadius();
|
||||
final spacing = AppFlowySharedTokens.buildSpacing();
|
||||
final shadow = AppFlowySharedTokens.buildShadow(Brightness.light);
|
||||
@ -172,8 +174,10 @@ class AppFlowyDefaultTheme implements AppFlowyThemeBuilder {
|
||||
}
|
||||
|
||||
@override
|
||||
AppFlowyThemeData dark() {
|
||||
final textStyle = AppFlowyBaseTextStyle();
|
||||
AppFlowyThemeData dark({
|
||||
String? fontFamily,
|
||||
}) {
|
||||
final textStyle = AppFlowyBaseTextStyle.customFontFamily(fontFamily ?? '');
|
||||
final borderRadius = AppFlowySharedTokens.buildBorderRadius();
|
||||
final spacing = AppFlowySharedTokens.buildSpacing();
|
||||
final shadow = AppFlowySharedTokens.buildShadow(Brightness.dark);
|
||||
|
@ -10,14 +10,16 @@ class CustomTheme implements AppFlowyThemeBuilder {
|
||||
final Map<String, dynamic> darkThemeJson;
|
||||
|
||||
@override
|
||||
AppFlowyThemeData light() {
|
||||
// TODO: implement light
|
||||
AppFlowyThemeData light({
|
||||
String? fontFamily,
|
||||
}) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
AppFlowyThemeData dark() {
|
||||
// TODO: implement dark
|
||||
AppFlowyThemeData dark({
|
||||
String? fontFamily,
|
||||
}) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
}
|
||||
|
@ -1,44 +1,50 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
abstract class TextThemeType {
|
||||
const TextThemeType();
|
||||
const TextThemeType({
|
||||
required this.fontFamily,
|
||||
});
|
||||
|
||||
final String fontFamily;
|
||||
|
||||
TextStyle standard({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
});
|
||||
|
||||
TextStyle enhanced({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
});
|
||||
|
||||
TextStyle prominent({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
});
|
||||
|
||||
TextStyle underline({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
});
|
||||
}
|
||||
|
||||
class TextThemeHeading1 extends TextThemeType {
|
||||
const TextThemeHeading1();
|
||||
const TextThemeHeading1({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
fontSize: 36,
|
||||
height: 40 / 36,
|
||||
color: color,
|
||||
@ -47,12 +53,12 @@ class TextThemeHeading1 extends TextThemeType {
|
||||
|
||||
@override
|
||||
TextStyle enhanced({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
fontSize: 36,
|
||||
height: 40 / 36,
|
||||
color: color,
|
||||
@ -61,12 +67,12 @@ class TextThemeHeading1 extends TextThemeType {
|
||||
|
||||
@override
|
||||
TextStyle prominent({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
fontSize: 36,
|
||||
height: 40 / 36,
|
||||
color: color,
|
||||
@ -75,12 +81,12 @@ class TextThemeHeading1 extends TextThemeType {
|
||||
|
||||
@override
|
||||
TextStyle underline({
|
||||
String family = '',
|
||||
String? family,
|
||||
Color? color,
|
||||
FontWeight? weight,
|
||||
}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
fontSize: 36,
|
||||
height: 40 / 36,
|
||||
color: color,
|
||||
@ -111,36 +117,38 @@ class TextThemeHeading1 extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeHeading2 extends TextThemeType {
|
||||
const TextThemeHeading2();
|
||||
const TextThemeHeading2({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w700,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -169,36 +177,38 @@ class TextThemeHeading2 extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeHeading3 extends TextThemeType {
|
||||
const TextThemeHeading3();
|
||||
const TextThemeHeading3({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w700,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -227,36 +237,38 @@ class TextThemeHeading3 extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeHeading4 extends TextThemeType {
|
||||
const TextThemeHeading4();
|
||||
const TextThemeHeading4({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w700,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -285,36 +297,38 @@ class TextThemeHeading4 extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeHeadline extends TextThemeType {
|
||||
const TextThemeHeadline();
|
||||
const TextThemeHeadline({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.bold,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -343,36 +357,38 @@ class TextThemeHeadline extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeTitle extends TextThemeType {
|
||||
const TextThemeTitle();
|
||||
const TextThemeTitle({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.bold,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -401,36 +417,38 @@ class TextThemeTitle extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeBody extends TextThemeType {
|
||||
const TextThemeBody();
|
||||
const TextThemeBody({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.bold,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
@ -459,36 +477,38 @@ class TextThemeBody extends TextThemeType {
|
||||
}
|
||||
|
||||
class TextThemeCaption extends TextThemeType {
|
||||
const TextThemeCaption();
|
||||
const TextThemeCaption({
|
||||
required super.fontFamily,
|
||||
});
|
||||
|
||||
@override
|
||||
TextStyle standard({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle standard({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle enhanced({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle enhanced({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.w600,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle prominent({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle prominent({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.bold,
|
||||
);
|
||||
|
||||
@override
|
||||
TextStyle underline({String family = '', Color? color, FontWeight? weight}) =>
|
||||
TextStyle underline({String? family, Color? color, FontWeight? weight}) =>
|
||||
_defaultTextStyle(
|
||||
family: family,
|
||||
family: family ?? super.fontFamily,
|
||||
color: color,
|
||||
weight: weight ?? FontWeight.normal,
|
||||
decoration: TextDecoration.underline,
|
||||
|
@ -1,15 +1,27 @@
|
||||
import 'package:appflowy_ui/src/theme/definition/text_style/base/default_text_style.dart';
|
||||
|
||||
class AppFlowyBaseTextStyle {
|
||||
factory AppFlowyBaseTextStyle.customFontFamily(String fontFamily) =>
|
||||
AppFlowyBaseTextStyle(
|
||||
heading1: TextThemeHeading1(fontFamily: fontFamily),
|
||||
heading2: TextThemeHeading2(fontFamily: fontFamily),
|
||||
heading3: TextThemeHeading3(fontFamily: fontFamily),
|
||||
heading4: TextThemeHeading4(fontFamily: fontFamily),
|
||||
headline: TextThemeHeadline(fontFamily: fontFamily),
|
||||
title: TextThemeTitle(fontFamily: fontFamily),
|
||||
body: TextThemeBody(fontFamily: fontFamily),
|
||||
caption: TextThemeCaption(fontFamily: fontFamily),
|
||||
);
|
||||
|
||||
const AppFlowyBaseTextStyle({
|
||||
this.heading1 = const TextThemeHeading1(),
|
||||
this.heading2 = const TextThemeHeading2(),
|
||||
this.heading3 = const TextThemeHeading3(),
|
||||
this.heading4 = const TextThemeHeading4(),
|
||||
this.headline = const TextThemeHeadline(),
|
||||
this.title = const TextThemeTitle(),
|
||||
this.body = const TextThemeBody(),
|
||||
this.caption = const TextThemeCaption(),
|
||||
this.heading1 = const TextThemeHeading1(fontFamily: ''),
|
||||
this.heading2 = const TextThemeHeading2(fontFamily: ''),
|
||||
this.heading3 = const TextThemeHeading3(fontFamily: ''),
|
||||
this.heading4 = const TextThemeHeading4(fontFamily: ''),
|
||||
this.headline = const TextThemeHeadline(fontFamily: ''),
|
||||
this.title = const TextThemeTitle(fontFamily: ''),
|
||||
this.body = const TextThemeBody(fontFamily: ''),
|
||||
this.caption = const TextThemeCaption(fontFamily: ''),
|
||||
});
|
||||
|
||||
final TextThemeType heading1;
|
||||
|
@ -81,6 +81,11 @@ class AppFlowyThemeData {
|
||||
abstract class AppFlowyThemeBuilder {
|
||||
const AppFlowyThemeBuilder();
|
||||
|
||||
AppFlowyThemeData light();
|
||||
AppFlowyThemeData dark();
|
||||
AppFlowyThemeData light({
|
||||
String? fontFamily,
|
||||
});
|
||||
|
||||
AppFlowyThemeData dark({
|
||||
String? fontFamily,
|
||||
});
|
||||
}
|
||||
|
4
frontend/resources/flowy_icons/20x/settings_page_ai.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8.03338 4.65784C8.37931 3.78072 9.62067 3.78072 9.9666 4.65785L11.0386 7.37598C11.1442 7.64377 11.3562 7.85575 11.624 7.96136L14.3422 9.03338C15.2193 9.37931 15.2193 10.6207 14.3422 10.9666L11.624 12.0386C11.3562 12.1442 11.1442 12.3562 11.0386 12.624L9.9666 15.3422C9.62066 16.2193 8.37931 16.2193 8.03338 15.3422L6.96136 12.624C6.85574 12.3562 6.64377 12.1442 6.37598 12.0386L3.65784 10.9666C2.78072 10.6207 2.78072 9.37931 3.65785 9.03338L6.37598 7.96136C6.64377 7.85574 6.85575 7.64377 6.96136 7.37598L8.03338 4.65784Z" stroke="#21232A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2788 2.18536C15.1765 1.93826 14.8264 1.9382 14.7239 2.18526L14.5912 2.5053C14.3879 2.99548 13.9983 3.3849 13.5079 3.58798L13.1854 3.72156C12.9382 3.82396 12.9382 4.17415 13.1855 4.27647L13.5049 4.40864C13.9962 4.61192 14.3865 5.00222 14.5896 5.49348L14.7224 5.81445C14.8247 6.0618 15.1751 6.06186 15.2774 5.81455L15.4093 5.49609C15.6125 5.00523 16.0025 4.61524 16.4934 4.41202L16.8158 4.27854C17.063 4.1762 17.0631 3.8261 16.8159 3.72367L16.4957 3.59096C16.0053 3.38775 15.6156 2.99814 15.4124 2.50778L15.2788 2.18536ZM15.2788 14.1854C15.1765 13.9383 14.8264 13.9382 14.7239 14.1853L14.5912 14.5053C14.3879 14.9955 13.9983 15.3849 13.5079 15.588L13.1854 15.7216C12.9382 15.824 12.9382 16.1742 13.1855 16.2765L13.5049 16.4086C13.9962 16.6119 14.3865 17.0022 14.5896 17.4935L14.7224 17.8145C14.8247 18.0618 15.1751 18.0619 15.2774 17.8145L15.4093 17.4961C15.6125 17.0052 16.0025 16.6152 16.4934 16.412L16.8158 16.2785C17.063 16.1762 17.0631 15.8261 16.8159 15.7237L16.4957 15.591C16.0053 15.3878 15.6156 14.9981 15.4124 14.5078L15.2788 14.1854Z" fill="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,4 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14.7246 8.3967V7.90348C14.7246 5.19536 12.6094 3 10.0002 3C7.39099 3 5.2758 5.19536 5.2758 7.90348V8.3967C5.2758 8.98864 5.107 9.56726 4.79066 10.0598L4.01545 11.2666C3.30737 12.369 3.84793 13.8674 5.07945 14.216C8.30111 15.128 11.6993 15.128 14.9209 14.216C16.1525 13.8674 16.693 12.369 15.9849 11.2666L15.2097 10.0598C14.8934 9.56726 14.7246 8.98864 14.7246 8.3967Z" stroke="#21232A"/>
|
||||
<path d="M6.85059 14.9001C7.30911 16.1235 8.54631 17.0001 10.0006 17.0001C11.4548 17.0001 12.6921 16.1235 13.1506 14.9001" stroke="#21232A" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 666 B |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.6667 7.95621C12.0837 7.81314 12.5325 7.73529 13 7.73529C13.4583 7.73529 13.8985 7.81009 14.3086 7.9478M14.3086 7.9478C15.8751 8.47391 17 9.91826 17 11.6176C17 13.7618 15.2091 15.5 13 15.5H6C4.34315 15.5 3 14.1964 3 12.5882C3 10.9801 4.34315 9.67646 6 9.67646C6.19888 9.67646 6.39325 9.69523 6.58131 9.73112M14.3086 7.9478C14.086 6.00818 12.3911 4.5 10.3333 4.5C8.1242 4.5 6.33333 6.23819 6.33333 8.38235C6.33333 8.85662 6.42094 9.31099 6.58131 9.73112M6.58131 9.73112C6.97641 9.8064 7.3437 9.95696 7.66667 10.1668" stroke="#21232A" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 673 B |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 13H6M3 8.70001H17M3 10C3 7.40727 3 6.11092 3.8201 5.30545C4.64021 4.5 5.96013 4.5 8.6 4.5H11.4C14.0398 4.5 15.3598 4.5 16.1799 5.30545C17 6.11092 17 7.40727 17 10C17 12.5927 17 13.8891 16.1799 14.6945C15.3598 15.5 14.0398 15.5 11.4 15.5H8.6C5.96013 15.5 4.64021 15.5 3.8201 14.6945C3 13.8891 3 12.5927 3 10Z" stroke="#21232A" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 467 B |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.5 5.8V14.2C4.5 15.7464 6.96242 17 9.99998 17C13.0375 17 15.5 15.7464 15.5 14.2V5.8M4.5 5.8C4.5 4.2536 6.96242 3 9.99998 3C13.0375 3 15.5 4.2536 15.5 5.8M4.5 5.8C4.5 7.34639 6.96242 8.6 9.99998 8.6C13.0375 8.6 15.5 7.34639 15.5 5.8M15.5 10C15.5 11.5464 13.0375 12.8 9.99998 12.8C6.96242 12.8 4.5 11.5464 4.5 10" stroke="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 445 B |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 17C13.866 17 17 13.866 17 10C17 6.13401 13.866 3 10 3M10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3M10 17C11.6569 17 13 13.866 13 10C13 6.13401 11.6569 3 10 3M10 17C8.34315 17 7 13.866 7 10C7 6.13401 8.34315 3 10 3M3 10.025H17" stroke="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 373 B |
@ -0,0 +1,11 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 7.25C7 7.66421 6.66421 8 6.25 8C5.83579 8 5.5 7.66421 5.5 7.25C5.5 6.83579 5.83579 6.5 6.25 6.5C6.66421 6.5 7 6.83579 7 7.25Z" fill="#21232A"/>
|
||||
<path d="M9.5 7.25C9.5 7.66421 9.16422 8 8.75 8C8.33577 8 8 7.66421 8 7.25C8 6.83579 8.33577 6.5 8.75 6.5C9.16422 6.5 9.5 6.83579 9.5 7.25Z" fill="#21232A"/>
|
||||
<path d="M12 7.25C12 7.66421 11.6642 8 11.25 8C10.8358 8 10.5 7.66421 10.5 7.25C10.5 6.83579 10.8358 6.5 11.25 6.5C11.6642 6.5 12 6.83579 12 7.25Z" fill="#21232A"/>
|
||||
<path d="M14.5 7.25C14.5 7.66421 14.1642 8 13.75 8C13.3358 8 13 7.66421 13 7.25C13 6.83579 13.3358 6.5 13.75 6.5C14.1642 6.5 14.5 6.83579 14.5 7.25Z" fill="#21232A"/>
|
||||
<path d="M7 9.75C7 10.1642 6.66421 10.5 6.25 10.5C5.83579 10.5 5.5 10.1642 5.5 9.75C5.5 9.33579 5.83579 9 6.25 9C6.66421 9 7 9.33579 7 9.75Z" fill="#21232A"/>
|
||||
<path d="M9.5 9.75C9.5 10.1642 9.16422 10.5 8.75 10.5C8.33577 10.5 8 10.1642 8 9.75C8 9.33579 8.33577 9 8.75 9C9.16422 9 9.5 9.33579 9.5 9.75Z" fill="#21232A"/>
|
||||
<path d="M12 9.75C12 10.1642 11.6642 10.5 11.25 10.5C10.8358 10.5 10.5 10.1642 10.5 9.75C10.5 9.33579 10.8358 9 11.25 9C11.6642 9 12 9.33579 12 9.75Z" fill="#21232A"/>
|
||||
<path d="M14.5 9.75C14.5 10.1642 14.1642 10.5 13.75 10.5C13.3358 10.5 13 10.1642 13 9.75C13 9.33579 13.3358 9 13.75 9C14.1642 9 14.5 9.33579 14.5 9.75Z" fill="#21232A"/>
|
||||
<path d="M7 13H13M3 9.21429C3 6.99195 3 5.88078 3.61508 5.19039C4.23015 4.5 5.2201 4.5 7.2 4.5H12.8C14.7799 4.5 15.7698 4.5 16.3849 5.19039C17 5.88078 17 6.99195 17 9.21429V10.7857C17 13.008 17 14.1192 16.3849 14.8096C15.7698 15.5 14.7799 15.5 12.8 15.5H7.2C5.2201 15.5 4.23015 15.5 3.61508 14.8096C3 14.1192 3 13.008 3 10.7857V9.21429Z" stroke="#21232A" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 11.5C6.72386 11.5 6.5 11.7239 6.5 12C6.5 12.2761 6.72386 12.5 7 12.5V11.5ZM13 12.5C13.2761 12.5 13.5 12.2761 13.5 12C13.5 11.7239 13.2761 11.5 13 11.5V12.5ZM7 13.5C6.72386 13.5 6.5 13.7239 6.5 14C6.5 14.2761 6.72386 14.5 7 14.5V13.5ZM10 14.5C10.2761 14.5 10.5 14.2761 10.5 14C10.5 13.7239 10.2761 13.5 10 13.5V14.5ZM15.4142 5.58468L15.7678 5.23114L15.7678 5.23114L15.4142 5.58468ZM15.4142 16.4141L15.0607 16.0606L15.0606 16.0606L15.4142 16.4141ZM4.58579 16.4141L4.93936 16.0606L4.93934 16.0606L4.58579 16.4141ZM4.58579 5.58468L4.23222 5.23115L4.23222 5.23115L4.58579 5.58468ZM7 12.5H13V11.5H7V12.5ZM7 14.5H10V13.5H7V14.5ZM12.6639 5.49999C13.3929 5.50405 13.9096 5.52299 14.3017 5.59503C14.6796 5.66444 14.8983 5.7759 15.0606 5.93822L15.7678 5.23114C15.4178 4.88116 14.9878 4.70432 14.4824 4.61148C13.9914 4.52128 13.3905 4.50402 12.6695 4.50001L12.6639 5.49999ZM15.0606 5.93822C15.2452 6.12276 15.3655 6.38185 15.4312 6.87109C15.4989 7.37471 15.5 8.04219 15.5 8.99922H16.5C16.5 8.07046 16.5011 7.32359 16.4223 6.73785C16.3416 6.13774 16.169 5.63245 15.7678 5.23114L15.0606 5.93822ZM15.5 8.99922V12.9996H16.5V8.99922H15.5ZM15.5 12.9996C15.5 13.9566 15.4989 14.6241 15.4312 15.1278C15.3655 15.617 15.2452 15.8761 15.0607 16.0606L15.7678 16.7677C16.169 16.3664 16.3416 15.8611 16.4223 15.261C16.5011 14.6752 16.5 13.9284 16.5 12.9996H15.5ZM15.0606 16.0606C14.8761 16.2451 14.6171 16.3655 14.1279 16.4312C13.6243 16.4989 12.9569 16.5 12 16.5V17.5C12.9287 17.5 13.6755 17.5011 14.2612 17.4223C14.8612 17.3416 15.3665 17.169 15.7678 16.7677L15.0606 16.0606ZM12 16.5H8V17.5H12V16.5ZM8 16.5C7.04305 16.5 6.37565 16.4989 5.87209 16.4312C5.38292 16.3655 5.12387 16.2451 4.93936 16.0606L4.23221 16.7677C4.63349 17.169 5.13874 17.3416 5.73882 17.4223C6.32452 17.5011 7.07133 17.5 8 17.5V16.5ZM4.93934 16.0606C4.75484 15.8761 4.63454 15.617 4.56877 15.1278C4.50106 14.6241 4.5 13.9566 4.5 12.9996H3.5C3.5 13.9284 3.49894 14.6752 3.57768 15.261C3.65836 15.8611 3.83094 16.3664 4.23223 16.7677L4.93934 16.0606ZM4.5 12.9996V8.99922H3.5V12.9996H4.5ZM4.5 8.99922C4.5 8.04219 4.50106 7.37471 4.56877 6.87109C4.63454 6.38184 4.75484 6.12275 4.93936 5.93822L4.23222 5.23115C3.83095 5.63246 3.65836 6.13774 3.57768 6.73786C3.49894 7.32359 3.5 8.07046 3.5 8.99922H4.5ZM4.93936 5.93822C5.10166 5.7759 5.32037 5.66444 5.69824 5.59503C6.0904 5.52299 6.60712 5.50405 7.33612 5.49999L7.33055 4.50001C6.60953 4.50402 6.0086 4.52128 5.51756 4.61148C5.01222 4.70432 4.58217 4.88116 4.23222 5.23115L4.93936 5.93822ZM7.5 4.125C7.5 3.77982 7.77982 3.5 8.125 3.5V2.5C7.22754 2.5 6.5 3.22754 6.5 4.125H7.5ZM8.125 3.5H11.875V2.5H8.125V3.5ZM11.875 3.5C12.2202 3.5 12.5 3.77983 12.5 4.125H13.5C13.5 3.22753 12.7724 2.5 11.875 2.5V3.5ZM12.5 4.125V4.875H13.5V4.125H12.5ZM12.5 4.875C12.5 5.22017 12.2202 5.5 11.875 5.5V6.5C12.7724 6.5 13.5 5.77247 13.5 4.875H12.5ZM11.875 5.5H8.125V6.5H11.875V5.5ZM8.125 5.5C7.77982 5.5 7.5 5.22018 7.5 4.875H6.5C6.5 5.77246 7.22754 6.5 8.125 6.5V5.5ZM7.5 4.875V4.125H6.5V4.875H7.5Z" fill="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
@ -0,0 +1,4 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.2 5.8C7.2 6.54261 7.495 7.2548 8.0201 7.7799C8.5452 8.305 9.25739 8.6 10 8.6C10.7426 8.6 11.4548 8.305 11.9799 7.7799C12.505 7.2548 12.8 6.54261 12.8 5.8C12.8 5.05739 12.505 4.3452 11.9799 3.8201C11.4548 3.295 10.7426 3 10 3C9.25739 3 8.5452 3.295 8.0201 3.8201C7.495 4.3452 7.2 5.05739 7.2 5.8Z" stroke="#21232A"/>
|
||||
<path d="M16 14C16 15.6569 16 17 10 17C4 17 4 15.6569 4 14C4 12.3431 6.68629 11 10 11C13.3137 11 16 12.3431 16 14Z" stroke="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 566 B |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.5789 8.15789C13.7998 8.15789 14.7895 7.16821 14.7895 5.94737C14.7895 4.72653 13.7998 3.73684 12.5789 3.73684M14.7895 11.8421C16.082 12.1256 17 12.8434 17 13.6842C17 14.4426 16.2531 15.1011 15.1579 15.4308M5.21053 5.94737C5.21053 6.72906 5.52105 7.47873 6.07379 8.03147C6.62653 8.58421 7.3762 8.89474 8.15789 8.89474C8.93959 8.89474 9.68926 8.58421 10.242 8.03147C10.7947 7.47873 11.1053 6.72906 11.1053 5.94737C11.1053 5.16568 10.7947 4.416 10.242 3.86326C9.68926 3.31053 8.93959 3 8.15789 3C7.3762 3 6.62653 3.31053 6.07379 3.86326C5.52105 4.416 5.21053 5.16568 5.21053 5.94737ZM3 14.0526C3 14.8343 3.54342 15.584 4.51071 16.1367C5.47801 16.6895 6.78994 17 8.15789 17C9.52585 17 10.8378 16.6895 11.8051 16.1367C12.7724 15.584 13.3158 14.8343 13.3158 14.0526C13.3158 13.2709 12.7724 12.5213 11.8051 11.9685C10.8378 11.4158 9.52585 11.1053 8.15789 11.1053C6.78994 11.1053 5.47801 11.4158 4.51071 11.9685C3.54342 12.5213 3 13.2709 3 14.0526Z" stroke="#21232A" stroke-linecap="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,3 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3 9.875H17M7.375 10V3.5M12.375 16.5V10M3 10C3 7.40727 3 5.61092 3.8201 4.80545C4.64021 4 5.96013 4 8.6 4H11.4C14.0398 4 15.3598 4 16.1799 4.80545C17 5.61092 17 7.40727 17 10C17 13.0927 17 14.3891 16.1799 15.1945C15.3598 16 14.0398 16 11.4 16H8.6C5.96013 16 4.64021 16 3.8201 15.1945C3 14.3891 3 13.0927 3 10Z" stroke="#21232A"/>
|
||||
</svg>
|
After Width: | Height: | Size: 442 B |