chore: revamp question bubble (#5923)

This commit is contained in:
Annie 2024-08-11 15:02:29 +08:00 committed by GitHub
parent e87ade6b3f
commit 2debd0283c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 297 additions and 104 deletions

View File

@ -86,7 +86,7 @@ enum RowAction {
return switch (this) {
insertAbove => FlowySvgs.arrow_s,
insertBelow => FlowySvgs.add_s,
duplicate => FlowySvgs.copy_s,
duplicate => FlowySvgs.duplicate_s,
delete => FlowySvgs.delete_s,
};
}

View File

@ -291,4 +291,9 @@ enum TabBarViewAction implements ActionCell {
@override
Widget? rightIcon(Color iconColor) => null;
@override
Color? textColor(BuildContext context) {
return null;
}
}

View File

@ -1,24 +1,18 @@
import 'package:appflowy/core/helpers/url_launcher.dart';
import 'package:appflowy/env/env.dart';
import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/application/document_bloc.dart';
import 'package:appflowy/startup/tasks/rust_sdk.dart';
import 'package:appflowy/util/theme_extension.dart';
import 'package:appflowy/workspace/presentation/home/toast.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy/workspace/presentation/widgets/float_bubble/social_media_section.dart';
import 'package:appflowy/workspace/presentation/widgets/float_bubble/version_section.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/flowy_tooltip.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:styled_widget/styled_widget.dart';
class QuestionBubble extends StatelessWidget {
const QuestionBubble({super.key});
@ -26,7 +20,7 @@ class QuestionBubble extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const SizedBox.square(
dimension: 36.0,
dimension: 32.0,
child: BubbleActionList(),
);
}
@ -62,7 +56,9 @@ class _BubbleActionListState extends State<BubbleActionList> {
actions.addAll(
BubbleAction.values.map((action) => BubbleActionWrapper(action)),
);
actions.add(FlowyVersionDescription());
actions.add(SocialMediaSection());
actions.add(FlowyVersionSection());
final (color, borderColor, shadowColor, iconColor) =
Theme.of(context).isLightMode
@ -83,6 +79,11 @@ class _BubbleActionListState extends State<BubbleActionList> {
direction: PopoverDirection.topWithRightAligned,
actions: actions,
offset: const Offset(0, -8),
constraints: const BoxConstraints(
minWidth: 200,
maxWidth: 460,
maxHeight: 400,
),
buildChild: (controller) {
return FlowyTooltip(
message: LocaleKeys.questionBubble_help.tr(),
@ -90,7 +91,7 @@ class _BubbleActionListState extends State<BubbleActionList> {
cursor: SystemMouseCursors.click,
child: GestureDetector(
child: Container(
padding: const EdgeInsets.all(10.0),
padding: const EdgeInsets.all(8.0),
decoration: ShapeDecoration(
color: color,
shape: RoundedRectangleBorder(
@ -178,75 +179,21 @@ class _DebugToast {
}
}
class FlowyVersionDescription extends CustomActionCell {
@override
Widget buildWithContext(BuildContext context, PopoverController controller) {
return FutureBuilder(
future: PackageInfo.fromPlatform(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return FlowyText(
"Error: ${snapshot.error}",
color: Theme.of(context).disabledColor,
);
enum BubbleAction {
whatsNews,
help,
debug,
shortcuts,
markdown,
github,
}
final PackageInfo packageInfo = snapshot.data;
final String appName = packageInfo.appName;
final String version = packageInfo.version;
return SizedBox(
height: 30,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Divider(
height: 1,
color: Theme.of(context).dividerColor,
thickness: 1.0,
),
const VSpace(6),
GestureDetector(
behavior: HitTestBehavior.opaque,
onDoubleTap: () {
if (Env.internalBuild != '1' && !kDebugMode) {
return;
}
enableDocumentInternalLog = !enableDocumentInternalLog;
showToastNotification(
context,
message: enableDocumentInternalLog
? 'Enabled Internal Log'
: 'Disabled Internal Log',
);
},
child: FlowyText(
'$appName $version',
color: Theme.of(context).hintColor,
),
),
],
).padding(
horizontal: ActionListSizes.itemHPadding,
),
);
} else {
return const SizedBox(height: 30);
}
},
);
}
}
enum BubbleAction { whatsNews, help, debug, shortcuts, markdown, github }
class BubbleActionWrapper extends ActionCell {
BubbleActionWrapper(this.inner);
final BubbleAction inner;
@override
Widget? leftIcon(Color iconColor) => inner.emoji;
Widget? leftIcon(Color iconColor) => inner.icons;
@override
String get name => inner.name;
@ -270,26 +217,20 @@ extension QuestionBubbleExtension on BubbleAction {
}
}
Widget get emoji {
Widget? get icons {
switch (this) {
case BubbleAction.whatsNews:
return const FlowyText.regular('🆕');
return const FlowySvg(FlowySvgs.star_s);
case BubbleAction.help:
return const FlowyText.regular('👥');
return const FlowySvg(FlowySvgs.message_support_s);
case BubbleAction.debug:
return const FlowyText.regular('🐛');
return const FlowySvg(FlowySvgs.debug_s);
case BubbleAction.shortcuts:
return const FlowyText.regular('📋');
return const FlowySvg(FlowySvgs.keyboard_s);
case BubbleAction.markdown:
return const FlowyText.regular('');
return const FlowySvg(FlowySvgs.number_s);
case BubbleAction.github:
return const Padding(
padding: EdgeInsets.all(3.0),
child: FlowySvg(
FlowySvgs.archive_m,
size: Size.square(12),
),
);
return const FlowySvg(FlowySvgs.share_feedback_s);
}
}
}

View File

@ -0,0 +1,105 @@
import 'package:appflowy/core/helpers/url_launcher.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flutter/material.dart';
class SocialMediaSection extends CustomActionCell {
@override
Widget buildWithContext(BuildContext context, PopoverController controller) {
final List<Widget> children = [
Divider(
height: 1,
color: Theme.of(context).dividerColor,
thickness: 1.0,
),
];
children.addAll(
SocialMedia.values.map(
(social) {
return ActionCellWidget(
action: SocialMediaWrapper(social),
itemHeight: ActionListSizes.itemHeight,
onSelected: (action) {
switch (action.inner) {
case SocialMedia.reddit:
afLaunchUrlString(
'https://www.reddit.com/r/AppFlowy/',
);
case SocialMedia.twitter:
afLaunchUrlString(
'https://x.com/appflowy',
);
case SocialMedia.forum:
afLaunchUrlString('https://forum.appflowy.io/');
}
},
);
},
),
);
return Padding(
padding: const EdgeInsets.symmetric(vertical: 6),
child: Column(
children: children,
),
);
}
}
enum SocialMedia { forum, twitter, reddit }
class SocialMediaWrapper extends ActionCell {
SocialMediaWrapper(this.inner);
final SocialMedia inner;
@override
Widget? leftIcon(Color iconColor) => inner.icons;
@override
String get name => inner.name;
@override
Color? textColor(BuildContext context) => inner.textColor(context);
}
extension QuestionBubbleExtension on SocialMedia {
Color? textColor(BuildContext context) {
switch (this) {
case SocialMedia.reddit:
return Theme.of(context).hintColor;
case SocialMedia.twitter:
return Theme.of(context).hintColor;
case SocialMedia.forum:
return Theme.of(context).hintColor;
default:
return null;
}
}
String get name {
switch (this) {
case SocialMedia.forum:
return "Community Forum";
case SocialMedia.twitter:
return "Twitter - @appflowy";
case SocialMedia.reddit:
return "Reddit - r/appflowy";
}
}
Widget? get icons {
switch (this) {
case SocialMedia.reddit:
return null;
case SocialMedia.twitter:
return null;
case SocialMedia.forum:
return null;
}
}
}

View File

@ -0,0 +1,73 @@
import 'package:appflowy/env/env.dart';
import 'package:appflowy/plugins/document/application/document_bloc.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:styled_widget/styled_widget.dart';
class FlowyVersionSection extends CustomActionCell {
@override
Widget buildWithContext(BuildContext context, PopoverController controller) {
return FutureBuilder(
future: PackageInfo.fromPlatform(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return FlowyText(
"Error: ${snapshot.error}",
color: Theme.of(context).disabledColor,
);
}
final PackageInfo packageInfo = snapshot.data;
final String appName = packageInfo.appName;
final String version = packageInfo.version;
return SizedBox(
height: 30,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Divider(
height: 1,
color: Theme.of(context).dividerColor,
thickness: 1.0,
),
const VSpace(6),
GestureDetector(
behavior: HitTestBehavior.opaque,
onDoubleTap: () {
if (Env.internalBuild != '1' && !kDebugMode) {
return;
}
enableDocumentInternalLog = !enableDocumentInternalLog;
showToastNotification(
context,
message: enableDocumentInternalLog
? 'Enabled Internal Log'
: 'Disabled Internal Log',
);
},
child: FlowyText(
'$appName $version',
color: Theme.of(context).hintColor,
fontSize: 12,
).padding(
horizontal: ActionListSizes.itemHPadding,
),
),
],
),
);
} else {
return const SizedBox(height: 30);
}
},
);
}
}

View File

@ -103,6 +103,9 @@ abstract class ActionCell extends PopoverAction {
Widget? leftIcon(Color iconColor) => null;
Widget? rightIcon(Color iconColor) => null;
String get name;
Color? textColor(BuildContext context) {
return null;
}
}
typedef PopoverActionCellBuilder = Widget Function(
@ -158,6 +161,7 @@ class ActionCellWidget<T extends PopoverAction> extends StatelessWidget {
leftIcon: leftIcon,
rightIcon: rightIcon,
name: actionCell.name,
textColor: actionCell.textColor(context),
onTap: () => onSelected(action),
);
}
@ -221,6 +225,7 @@ class HoverButton extends StatelessWidget {
this.leftIcon,
required this.name,
this.rightIcon,
this.textColor,
});
final VoidCallback onTap;
@ -228,6 +233,7 @@ class HoverButton extends StatelessWidget {
final Widget? leftIcon;
final Widget? rightIcon;
final String name;
final Color? textColor;
@override
Widget build(BuildContext context) {
@ -248,6 +254,7 @@ class HoverButton extends StatelessWidget {
name,
overflow: TextOverflow.visible,
lineHeight: 1.15,
color: textColor,
),
),
if (rightIcon != null) ...[

View File

@ -1,4 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9743 6.33301H7.35889C6.79245 6.33301 6.33325 6.7922 6.33325 7.35865V11.974C6.33325 12.5405 6.79245 12.9997 7.35889 12.9997H11.9743C12.5407 12.9997 12.9999 12.5405 12.9999 11.974V7.35865C12.9999 6.7922 12.5407 6.33301 11.9743 6.33301Z" stroke="#333333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.53846 9.66667H4.02564C3.75362 9.66667 3.49275 9.55861 3.3004 9.36626C3.10806 9.17392 3 8.91304 3 8.64103V4.02564C3 3.75362 3.10806 3.49275 3.3004 3.3004C3.49275 3.10806 3.75362 3 4.02564 3H8.64103C8.91304 3 9.17392 3.10806 9.36626 3.3004C9.55861 3.49275 9.66667 3.75362 9.66667 4.02564V4.53846" stroke="#333333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.6654 8.60065V11.4007C10.6654 13.734 9.73203 14.6673 7.3987 14.6673H4.5987C2.26536 14.6673 1.33203 13.734 1.33203 11.4007V8.60065C1.33203 6.26732 2.26536 5.33398 4.5987 5.33398H7.3987C9.73203 5.33398 10.6654 6.26732 10.6654 8.60065Z" stroke="#171717" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6654 4.60065V7.40065C14.6654 9.73398 13.732 10.6673 11.3987 10.6673H10.6654V8.60065C10.6654 6.26732 9.73203 5.33398 7.3987 5.33398H5.33203V4.60065C5.33203 2.26732 6.26536 1.33398 8.5987 1.33398H11.3987C13.732 1.33398 14.6654 2.26732 14.6654 4.60065Z" stroke="#171717" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 745 B

View File

@ -0,0 +1,20 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_51_8)">
<path d="M12.7861 10.0512V7.95725C12.7861 6.47044 11.5807 5.26513 10.0939 5.26513H5.90618C4.4193 5.26513 3.21399 6.47044 3.21399 7.95725V10.0512C3.21399 12.6944 5.3568 14.8372 8.00005 14.8372C10.6433 14.8372 12.7861 12.6944 12.7861 10.0512Z" stroke="black"/>
<path d="M11.0767 5.607V4.92325C11.0767 3.224 9.69922 1.8465 7.99997 1.8465C6.30072 1.8465 4.92322 3.224 4.92322 4.92325V5.607" stroke="black"/>
<path d="M12.786 9.36744H14.8371" stroke="black" stroke-linecap="round"/>
<path d="M3.21397 9.36744H1.16284" stroke="black" stroke-linecap="round"/>
<path d="M9.70935 2.18837L11.4187 1.16281" stroke="black" stroke-linecap="round"/>
<path d="M6.29073 2.18837L4.58142 1.16281" stroke="black" stroke-linecap="round"/>
<path d="M13.8117 13.4699L12.4442 12.9229" stroke="black" stroke-linecap="round"/>
<path d="M13.8117 5.265L12.4442 5.81194" stroke="black" stroke-linecap="round"/>
<path d="M2.18835 13.4699L3.55579 12.9229" stroke="black" stroke-linecap="round"/>
<path d="M2.18835 5.265L3.55579 5.81194" stroke="black" stroke-linecap="round"/>
<path d="M8 14.4954V10.0512" stroke="black" stroke-linecap="round"/>
</g>
<defs>
<clipPath id="clip0_51_8">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,11 +1,6 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_859_40861)">
<path d="M8.00207 15.9668C3.84348 15.9668 0.472656 12.596 0.472656 8.43737C0.472656 4.27878 3.84348 0.907959 8.00207 0.907959C12.1607 0.907959 15.5315 4.27878 15.5315 8.43737C15.5315 12.596 12.1607 15.9668 8.00207 15.9668ZM8.00207 15.0256C11.6407 15.0256 14.5903 12.076 14.5903 8.43737C14.5903 4.79878 11.6407 1.84914 8.00207 1.84914C4.36348 1.84914 1.41383 4.79878 1.41383 8.43737C1.41383 12.076 4.36348 15.0256 8.00207 15.0256Z" fill="#171717" stroke="black" stroke-width="0.133333"/>
<path d="M7.96863 12.6016C7.78728 12.6016 7.61337 12.5295 7.48513 12.4013C7.3569 12.2731 7.28486 12.0992 7.28486 11.9178C7.28486 11.7365 7.3569 11.5626 7.48513 11.4343C7.61337 11.3061 7.78728 11.2341 7.96863 11.2341C8.14997 11.2341 8.32389 11.3061 8.45212 11.4343C8.58035 11.5626 8.65239 11.7365 8.65239 11.9178C8.65239 12.0992 8.58035 12.2731 8.45212 12.4013C8.32389 12.5295 8.14997 12.6016 7.96863 12.6016ZM6.12016 7.2157C6.05257 7.21522 5.98585 7.20044 5.92438 7.17233C5.86292 7.14423 5.80809 7.10344 5.76351 7.05263C5.71893 7.00183 5.68561 6.94217 5.66572 6.87757C5.64584 6.81297 5.63986 6.7449 5.64816 6.67782C5.67922 6.41194 5.72863 6.19453 5.79639 6.02559C5.91127 5.74558 6.08998 5.49629 6.31828 5.29759C6.55006 5.08809 6.82166 4.92741 7.11686 4.82512C7.41609 4.72254 7.73043 4.671 8.04675 4.67265C8.70557 4.67265 9.25381 4.86653 9.69239 5.25476C10.131 5.64159 10.3507 6.15829 10.3507 6.803C10.3507 7.09288 10.2943 7.35547 10.1813 7.59076C10.0693 7.82653 9.83028 8.12017 9.46463 8.47123C9.09804 8.82276 8.85616 9.07265 8.73616 9.22135C8.61183 9.3793 8.51973 9.56014 8.4651 9.75359C8.43216 9.86229 8.40863 9.99076 8.39592 10.1385C8.37334 10.3879 8.17286 10.5856 7.92251 10.5856C7.85592 10.5852 7.79014 10.5709 7.72937 10.5436C7.66861 10.5164 7.6142 10.4768 7.5696 10.4273C7.52501 10.3778 7.49122 10.3196 7.47039 10.2564C7.44956 10.1931 7.44215 10.1262 7.44863 10.0599C7.4651 9.88865 7.49004 9.73947 7.52486 9.61241C7.58933 9.37006 7.68722 9.15829 7.81804 8.97712C7.94839 8.79547 8.18369 8.52912 8.52392 8.17759C8.86463 7.82653 9.08392 7.57053 9.18275 7.41194C9.27969 7.25241 9.38181 6.99312 9.38181 6.67782C9.38181 6.36253 9.21569 6.10606 8.99216 5.86323C8.76722 5.62041 8.4411 5.49853 8.01333 5.49853C7.17851 5.49853 6.7051 5.92817 6.59404 6.78747C6.56251 7.02935 6.3658 7.2157 6.12204 7.2157H6.12016Z" fill="#171717" stroke="black" stroke-width="0.133333"/>
</g>
<defs>
<clipPath id="clip0_859_40861">
<rect width="16" height="16" fill="white" transform="translate(0 0.4375)"/>
</clipPath>
</defs>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.55676 4.62532C4.55676 0.243068 11.4431 0.24313 11.4431 4.62532C11.4431 7.75538 8.31295 7.12932 8.31295 10.8854" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.32104 14.6614L8.33023 14.6512" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 400 B

View File

@ -0,0 +1,14 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.58143 5.94881C4.58143 6.32644 4.2753 6.63256 3.89774 6.63256C3.52018 6.63256 3.21399 6.32644 3.21399 5.94881C3.21399 5.57119 3.52011 5.26513 3.89774 5.26513C4.27536 5.26513 4.58143 5.57125 4.58143 5.94881Z" fill="black"/>
<path d="M4.58143 8C4.58143 8.37762 4.2753 8.68369 3.89774 8.68369C3.52018 8.68369 3.21399 8.37762 3.21399 8C3.21399 7.62238 3.52011 7.31625 3.89774 7.31625C4.27536 7.31625 4.58143 7.62238 4.58143 8Z" fill="black"/>
<path d="M6.63257 8C6.63257 8.37762 6.32645 8.68369 5.94882 8.68369C5.5712 8.68369 5.26514 8.37762 5.26514 8C5.26514 7.62238 5.57126 7.31625 5.94882 7.31625C6.32639 7.31625 6.63257 7.62238 6.63257 8Z" fill="black"/>
<path d="M6.63257 5.94881C6.63257 6.32644 6.32645 6.63256 5.94882 6.63256C5.5712 6.63256 5.26514 6.32644 5.26514 5.94881C5.26514 5.57119 5.57126 5.26513 5.94882 5.26513C6.32639 5.26513 6.63257 5.57125 6.63257 5.94881Z" fill="black"/>
<path d="M8.68372 5.94881C8.68372 6.32644 8.3776 6.63256 7.99997 6.63256C7.62235 6.63256 7.31628 6.32644 7.31628 5.94881C7.31628 5.57119 7.62235 5.26513 7.99997 5.26513C8.3776 5.26513 8.68372 5.57125 8.68372 5.94881Z" fill="black"/>
<path d="M8.68372 8C8.68372 8.37762 8.3776 8.68369 7.99997 8.68369C7.62235 8.68369 7.31628 8.37762 7.31628 8C7.31628 7.62238 7.62235 7.31625 7.99997 7.31625C8.3776 7.31625 8.68372 7.62238 8.68372 8Z" fill="black"/>
<path d="M10.7349 5.94881C10.7349 6.32644 10.4288 6.63256 10.0512 6.63256C9.67356 6.63256 9.36743 6.32644 9.36743 5.94881C9.36743 5.57119 9.67356 5.26513 10.0512 5.26513C10.4288 5.26513 10.7349 5.57125 10.7349 5.94881Z" fill="black"/>
<path d="M10.7349 8C10.7349 8.37762 10.4288 8.68369 10.0512 8.68369C9.67356 8.68369 9.36743 8.37762 9.36743 8C9.36743 7.62238 9.67356 7.31625 10.0512 7.31625C10.4288 7.31625 10.7349 7.62238 10.7349 8Z" fill="black"/>
<path d="M12.786 5.94881C12.786 6.32644 12.4799 6.63256 12.1023 6.63256C11.7246 6.63256 11.4186 6.32644 11.4186 5.94881C11.4186 5.57119 11.7246 5.26513 12.1023 5.26513C12.4799 5.26513 12.786 5.57125 12.786 5.94881Z" fill="black"/>
<path d="M12.786 8C12.786 8.37762 12.4799 8.68369 12.1023 8.68369C11.7246 8.68369 11.4186 8.37762 11.4186 8C11.4186 7.62238 11.7246 7.31625 12.1023 7.31625C12.4799 7.31625 12.786 7.62238 12.786 8Z" fill="black"/>
<path d="M1.16284 7.31625C1.16284 5.38244 1.16284 4.4155 1.76359 3.81475C2.36434 3.21394 3.33128 3.21394 5.26515 3.21394H10.7349C12.6688 3.21394 13.6357 3.21394 14.2365 3.81475C14.8372 4.4155 14.8372 5.38244 14.8372 7.31625V8.68375C14.8372 10.6176 14.8372 11.5845 14.2365 12.1853C13.6357 12.7861 12.6687 12.7861 10.7349 12.7861H5.26515C3.33128 12.7861 2.36434 12.7861 1.76359 12.1853C1.16284 11.5845 1.16284 10.6176 1.16284 8.68375V7.31625Z" stroke="black"/>
<path d="M4.58142 10.7349H11.4187" stroke="black" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,12 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_51_4)">
<path d="M5.47817 13.2508C9.79161 15.4635 14.8829 12.177 14.6424 7.33506C14.4019 2.49313 9.01011 -0.272812 4.93711 2.35644C2.21798 4.11169 1.27198 7.64219 2.74917 10.5218L1.34973 14.6503L5.47817 13.2508Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.31091 5.55369C6.84716 4.02931 8.83254 3.65706 9.88454 4.88369C10.2117 5.265 10.3911 5.75106 10.3904 6.25344C10.3904 7.65294 8.29116 8.35262 8.29116 8.35262" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.34705 11.1516H8.35405" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_51_4">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 840 B

View File

@ -0,0 +1,12 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_51_33)">
<path d="M7.99998 1.16281V6.63256M7.99998 6.63256L10.0511 4.58137M7.99998 6.63256L5.94885 4.58137" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1.16284 8.68369H3.32359C3.94247 8.68369 4.2519 8.68369 4.5239 8.80881C4.7959 8.93387 4.99728 9.16887 5.40003 9.63869L5.81397 10.1217C6.21672 10.5915 6.41815 10.8265 6.69015 10.9516C6.96215 11.0767 7.27159 11.0767 7.8904 11.0767H8.10965C8.72847 11.0767 9.0379 11.0767 9.3099 10.9516C9.58197 10.8265 9.78328 10.5915 10.1861 10.1217L10.6 9.63869C11.0028 9.16887 11.2042 8.93387 11.4762 8.80881C11.7482 8.68369 12.0576 8.68369 12.6765 8.68369H14.8372" stroke="black" stroke-linecap="round"/>
<path d="M11.4186 1.24956C12.5297 1.35887 13.2777 1.60587 13.8359 2.16412C14.8372 3.16544 14.8372 4.77694 14.8372 8.00006C14.8372 11.2231 14.8372 12.8347 13.8359 13.8359C12.8347 14.8372 11.2231 14.8372 8.00003 14.8372C4.77697 14.8372 3.1654 14.8372 2.16415 13.8359C1.16284 12.8347 1.16284 11.2231 1.16284 8.00006C1.16284 4.77694 1.16284 3.16544 2.16415 2.16412C2.72234 1.60587 3.47028 1.35887 4.58147 1.24956" stroke="black" stroke-linecap="round"/>
</g>
<defs>
<clipPath id="clip0_51_33">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

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_51_2)">
<path d="M6.0536 3.49319C6.9196 1.93962 7.3526 1.16281 8.00004 1.16281C8.64748 1.16281 9.08048 1.93956 9.94648 3.49319L10.1705 3.89512C10.4167 4.33656 10.5397 4.55731 10.7315 4.703C10.9234 4.84862 11.1623 4.90269 11.6402 5.01081L12.0754 5.10925C13.757 5.48975 14.5979 5.68 14.798 6.32331C14.998 6.96662 14.4248 7.637 13.2783 8.97762L12.9817 9.3245C12.6559 9.7055 12.493 9.89594 12.4197 10.1316C12.3464 10.3673 12.371 10.6214 12.4203 11.1298L12.4651 11.5926C12.6385 13.3813 12.7252 14.2757 12.2014 14.6732C11.6776 15.0708 10.8903 14.7083 9.31573 13.9834L8.90835 13.7957C8.46092 13.5897 8.23723 13.4867 8.00004 13.4867C7.76285 13.4867 7.5391 13.5897 7.09173 13.7957L6.68435 13.9834C5.10973 14.7083 4.32242 15.0708 3.79867 14.6732C3.27492 14.2757 3.3616 13.3813 3.53492 11.5926L3.57973 11.1298C3.62904 10.6214 3.65367 10.3673 3.58035 10.1316C3.5071 9.89594 3.34417 9.7055 3.01835 9.3245L2.72179 8.97762C1.57529 7.637 1.00204 6.96662 1.2021 6.32331C1.4021 5.68 2.24298 5.48975 3.92473 5.10925L4.35979 5.01081C4.83773 4.90269 5.07667 4.84862 5.26854 4.703C5.46042 4.55737 5.58342 4.33656 5.82954 3.89512L6.0536 3.49319Z" stroke="black"/>
</g>
<defs>
<clipPath id="clip0_51_2">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1498,7 +1498,6 @@
"outline": "Outline",
"codeBlock": "Code Block"
},
"plugins": {
"referencedBoard": "Referenced Board",
"referencedGrid": "Referenced Grid",
@ -1650,12 +1649,12 @@
"file": {
"name": "File",
"uploadTab": "Upload",
"networkTab": "Integrate link",
"networkTab": "Embed link",
"placeholderText": "Click or drag and drop to upload a file",
"placeholderDragging": "Drop the file to upload",
"dropFileToUpload": "Drop the file to upload",
"fileUploadHint": "Drag and drop a file here\nor click to select a file.",
"networkHint": "Enter a link to a file",
"networkHint": "Paste a file link",
"networkUrlInvalid": "Invalid URL, please correct the URL and try again",
"networkAction": "Embed file link",
"fileTooBigError": "File size is too big, please upload a file with size less than 10MB",
@ -1743,7 +1742,7 @@
"placeholder": "Select language",
"auto": "Auto"
},
"copyTooltip": "Copy contents of the code block",
"copyTooltip": "Copy",
"searchLanguageHint": "Search for a language",
"codeCopiedSnackbar": "Code copied to clipboard!"
},