refactor: Update quick actions description and enhance AppCustomizationPage layout
- Revised the quick actions description in multiple languages to clarify their purpose as "Quickpills in chat." - Adjusted the layout of AppCustomizationPage by reintroducing the quick pills section for improved user interaction. - Modified spacing between UI elements for better visual consistency and usability. - Streamlined the component structure to enhance maintainability and readability.
This commit is contained in:
@@ -59,8 +59,9 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
themeMode,
|
themeMode,
|
||||||
themeDescription,
|
themeDescription,
|
||||||
activeTheme,
|
activeTheme,
|
||||||
|
settings,
|
||||||
),
|
),
|
||||||
const SizedBox(height: Spacing.xl),
|
const SizedBox(height: Spacing.md),
|
||||||
_buildLanguageSection(
|
_buildLanguageSection(
|
||||||
context,
|
context,
|
||||||
ref,
|
ref,
|
||||||
@@ -68,8 +69,6 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
languageLabel,
|
languageLabel,
|
||||||
),
|
),
|
||||||
const SizedBox(height: Spacing.xl),
|
const SizedBox(height: Spacing.xl),
|
||||||
_buildQuickPillsSection(context, ref, settings),
|
|
||||||
const SizedBox(height: Spacing.xl),
|
|
||||||
_buildTtsDropdownSection(context, ref, settings),
|
_buildTtsDropdownSection(context, ref, settings),
|
||||||
const SizedBox(height: Spacing.xl),
|
const SizedBox(height: Spacing.xl),
|
||||||
_buildChatSection(context, ref, settings),
|
_buildChatSection(context, ref, settings),
|
||||||
@@ -118,6 +117,7 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
ThemeMode themeMode,
|
ThemeMode themeMode,
|
||||||
String themeDescription,
|
String themeDescription,
|
||||||
TweakcnThemeDefinition activeTheme,
|
TweakcnThemeDefinition activeTheme,
|
||||||
|
AppSettings settings,
|
||||||
) {
|
) {
|
||||||
final theme = context.conduitTheme;
|
final theme = context.conduitTheme;
|
||||||
|
|
||||||
@@ -185,6 +185,8 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(height: Spacing.md),
|
const SizedBox(height: Spacing.md),
|
||||||
_buildPaletteSelector(context, ref, activeTheme),
|
_buildPaletteSelector(context, ref, activeTheme),
|
||||||
|
const SizedBox(height: Spacing.md),
|
||||||
|
_buildQuickPillsSection(context, ref, settings),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -281,7 +283,6 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
WidgetRef ref,
|
WidgetRef ref,
|
||||||
AppSettings settings,
|
AppSettings settings,
|
||||||
) {
|
) {
|
||||||
final theme = context.conduitTheme;
|
|
||||||
final selectedRaw = ref.watch(
|
final selectedRaw = ref.watch(
|
||||||
appSettingsProvider.select((s) => s.quickPills),
|
appSettingsProvider.select((s) => s.quickPills),
|
||||||
);
|
);
|
||||||
@@ -333,17 +334,7 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
? 'No actions'
|
? 'No actions'
|
||||||
: '$selectedCount action${selectedCount == 1 ? '' : 's'} selected';
|
: '$selectedCount action${selectedCount == 1 ? '' : 's'} selected';
|
||||||
|
|
||||||
return Column(
|
return _ExpandableCard(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
l10n.onboardQuickTitle,
|
|
||||||
style:
|
|
||||||
theme.headingSmall?.copyWith(color: theme.sidebarForeground) ??
|
|
||||||
TextStyle(color: theme.sidebarForeground, fontSize: 18),
|
|
||||||
),
|
|
||||||
const SizedBox(height: Spacing.sm),
|
|
||||||
_ExpandableCard(
|
|
||||||
title: l10n.quickActionsDescription,
|
title: l10n.quickActionsDescription,
|
||||||
subtitle: selectedCountText,
|
subtitle: selectedCountText,
|
||||||
icon: UiUtils.platformIcon(
|
icon: UiUtils.platformIcon(
|
||||||
@@ -391,8 +382,6 @@ class AppCustomizationPage extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -312,7 +312,7 @@
|
|||||||
,
|
,
|
||||||
"appCustomization": "Anpassung",
|
"appCustomization": "Anpassung",
|
||||||
"appCustomizationSubtitle": "Design, Sprache, Stimme und Quick Pills",
|
"appCustomizationSubtitle": "Design, Sprache, Stimme und Quick Pills",
|
||||||
"quickActionsDescription": "Wähle bis zu zwei Schnellzugriffe, die neben dem Eingabefeld angepinnt werden",
|
"quickActionsDescription": "Schnellzugriffe im Chat",
|
||||||
"chatSettings": "Chat",
|
"chatSettings": "Chat",
|
||||||
"sendOnEnter": "Mit Enter senden",
|
"sendOnEnter": "Mit Enter senden",
|
||||||
"sendOnEnterDescription": "Enter sendet (Soft-Tastatur). Cmd/Ctrl+Enter ebenfalls verfügbar",
|
"sendOnEnterDescription": "Enter sendet (Soft-Tastatur). Cmd/Ctrl+Enter ebenfalls verfügbar",
|
||||||
|
|||||||
@@ -640,7 +640,7 @@
|
|||||||
"@appCustomization": {"description": "Title of the customization settings page."},
|
"@appCustomization": {"description": "Title of the customization settings page."},
|
||||||
"appCustomizationSubtitle": "Theme, language, voice, and quickpills",
|
"appCustomizationSubtitle": "Theme, language, voice, and quickpills",
|
||||||
"@appCustomizationSubtitle": {"description": "Subtitle shown under App Customization tile and page header."},
|
"@appCustomizationSubtitle": {"description": "Subtitle shown under App Customization tile and page header."},
|
||||||
"quickActionsDescription": "Pick up to two shortcuts to pin near the composer",
|
"quickActionsDescription": "Quickpills in chat",
|
||||||
"@quickActionsDescription": {"description": "Helper text explaining quick action pill selection in customization."},
|
"@quickActionsDescription": {"description": "Helper text explaining quick action pill selection in customization."},
|
||||||
"chatSettings": "Chat",
|
"chatSettings": "Chat",
|
||||||
"@chatSettings": {"description": "Section header for chat-related customization options."},
|
"@chatSettings": {"description": "Section header for chat-related customization options."},
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
},
|
},
|
||||||
"appCustomization": "Personalización",
|
"appCustomization": "Personalización",
|
||||||
"appCustomizationSubtitle": "Tema, idioma, voz y quickpills",
|
"appCustomizationSubtitle": "Tema, idioma, voz y quickpills",
|
||||||
"quickActionsDescription": "Elige hasta dos accesos directos para anclar cerca del compositor",
|
"quickActionsDescription": "Accesos directos en chat",
|
||||||
"chatSettings": "Conversación",
|
"chatSettings": "Conversación",
|
||||||
"sendOnEnter": "Enviar con Enter",
|
"sendOnEnter": "Enviar con Enter",
|
||||||
"sendOnEnterDescription": "Enter envía (teclado virtual). Cmd/Ctrl+Enter también disponible",
|
"sendOnEnterDescription": "Enter envía (teclado virtual). Cmd/Ctrl+Enter también disponible",
|
||||||
|
|||||||
@@ -312,7 +312,7 @@
|
|||||||
,
|
,
|
||||||
"appCustomization": "Personnalisation",
|
"appCustomization": "Personnalisation",
|
||||||
"appCustomizationSubtitle": "Thème, langue, voix et quickpills",
|
"appCustomizationSubtitle": "Thème, langue, voix et quickpills",
|
||||||
"quickActionsDescription": "Choisissez jusqu'à deux raccourcis à épingler près du champ de saisie",
|
"quickActionsDescription": "Raccourcis dans le chat",
|
||||||
"chatSettings": "Discussion",
|
"chatSettings": "Discussion",
|
||||||
"sendOnEnter": "Envoyer avec Entrée",
|
"sendOnEnter": "Envoyer avec Entrée",
|
||||||
"sendOnEnterDescription": "Entrée envoie (clavier logiciel). Cmd/Ctrl+Entrée aussi disponible",
|
"sendOnEnterDescription": "Entrée envoie (clavier logiciel). Cmd/Ctrl+Entrée aussi disponible",
|
||||||
|
|||||||
@@ -312,7 +312,7 @@
|
|||||||
,
|
,
|
||||||
"appCustomization": "Personalizzazione",
|
"appCustomization": "Personalizzazione",
|
||||||
"appCustomizationSubtitle": "Tema, lingua, voce e quickpills",
|
"appCustomizationSubtitle": "Tema, lingua, voce e quickpills",
|
||||||
"quickActionsDescription": "Scegli fino a due scorciatoie da fissare vicino al campo di input",
|
"quickActionsDescription": "Scorciatoie nella chat",
|
||||||
"chatSettings": "Chat",
|
"chatSettings": "Chat",
|
||||||
"sendOnEnter": "Invia con Invio",
|
"sendOnEnter": "Invia con Invio",
|
||||||
"sendOnEnterDescription": "Invio invia (tastiera software). Cmd/Ctrl+Invio disponibile",
|
"sendOnEnterDescription": "Invio invia (tastiera software). Cmd/Ctrl+Invio disponibile",
|
||||||
|
|||||||
@@ -1697,7 +1697,7 @@ abstract class AppLocalizations {
|
|||||||
/// Helper text explaining quick action pill selection in customization.
|
/// Helper text explaining quick action pill selection in customization.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'Pick up to two shortcuts to pin near the composer'**
|
/// **'Quickpills in chat'**
|
||||||
String get quickActionsDescription;
|
String get quickActionsDescription;
|
||||||
|
|
||||||
/// Section header for chat-related customization options.
|
/// Section header for chat-related customization options.
|
||||||
|
|||||||
@@ -882,8 +882,7 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||||||
'Design, Sprache, Stimme und Quick Pills';
|
'Design, Sprache, Stimme und Quick Pills';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get quickActionsDescription =>
|
String get quickActionsDescription => 'Schnellzugriffe im Chat';
|
||||||
'Wähle bis zu zwei Schnellzugriffe, die neben dem Eingabefeld angepinnt werden';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get chatSettings => 'Chat';
|
String get chatSettings => 'Chat';
|
||||||
|
|||||||
@@ -875,8 +875,7 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||||||
'Theme, language, voice, and quickpills';
|
'Theme, language, voice, and quickpills';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get quickActionsDescription =>
|
String get quickActionsDescription => 'Quickpills in chat';
|
||||||
'Pick up to two shortcuts to pin near the composer';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get chatSettings => 'Chat';
|
String get chatSettings => 'Chat';
|
||||||
|
|||||||
@@ -889,8 +889,7 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||||||
String get appCustomizationSubtitle => 'Thème, langue, voix et quickpills';
|
String get appCustomizationSubtitle => 'Thème, langue, voix et quickpills';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get quickActionsDescription =>
|
String get quickActionsDescription => 'Raccourcis dans le chat';
|
||||||
'Choisissez jusqu\'à deux raccourcis à épingler près du champ de saisie';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get chatSettings => 'Discussion';
|
String get chatSettings => 'Discussion';
|
||||||
|
|||||||
@@ -878,8 +878,7 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||||||
String get appCustomizationSubtitle => 'Tema, lingua, voce e quickpills';
|
String get appCustomizationSubtitle => 'Tema, lingua, voce e quickpills';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get quickActionsDescription =>
|
String get quickActionsDescription => 'Scorciatoie nella chat';
|
||||||
'Scegli fino a due scorciatoie da fissare vicino al campo di input';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get chatSettings => 'Chat';
|
String get chatSettings => 'Chat';
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
},
|
},
|
||||||
"appCustomization": "Aanpassing",
|
"appCustomization": "Aanpassing",
|
||||||
"appCustomizationSubtitle": "Thema, taal, stem en quickpills",
|
"appCustomizationSubtitle": "Thema, taal, stem en quickpills",
|
||||||
"quickActionsDescription": "Kies maximaal twee snelkoppelingen om vast te pinnen bij de composer",
|
"quickActionsDescription": "Snelkoppelingen in chat",
|
||||||
"chatSettings": "Chat",
|
"chatSettings": "Chat",
|
||||||
"sendOnEnter": "Verzenden met Enter",
|
"sendOnEnter": "Verzenden met Enter",
|
||||||
"sendOnEnterDescription": "Enter verzendt (softtoetsenbord). Cmd/Ctrl+Enter ook beschikbaar",
|
"sendOnEnterDescription": "Enter verzendt (softtoetsenbord). Cmd/Ctrl+Enter ook beschikbaar",
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
},
|
},
|
||||||
"appCustomization": "Настройка",
|
"appCustomization": "Настройка",
|
||||||
"appCustomizationSubtitle": "Тема, язык, голос и quickpills",
|
"appCustomizationSubtitle": "Тема, язык, голос и quickpills",
|
||||||
"quickActionsDescription": "Выберите до двух ярлыков для закрепления рядом с полем ввода",
|
"quickActionsDescription": "Быстрые клавиши в чате",
|
||||||
"chatSettings": "Чат",
|
"chatSettings": "Чат",
|
||||||
"sendOnEnter": "Отправка по Enter",
|
"sendOnEnter": "Отправка по Enter",
|
||||||
"sendOnEnterDescription": "Enter отправляет (программная клавиатура). Также доступно Cmd/Ctrl+Enter",
|
"sendOnEnterDescription": "Enter отправляет (программная клавиатура). Также доступно Cmd/Ctrl+Enter",
|
||||||
|
|||||||
@@ -305,7 +305,7 @@
|
|||||||
},
|
},
|
||||||
"appCustomization": "自定义",
|
"appCustomization": "自定义",
|
||||||
"appCustomizationSubtitle": "主题、语言、语音和 quickpills",
|
"appCustomizationSubtitle": "主题、语言、语音和 quickpills",
|
||||||
"quickActionsDescription": "选择最多两个快捷方式以固定在撰写器附近",
|
"quickActionsDescription": "聊天快捷方式",
|
||||||
"chatSettings": "对话",
|
"chatSettings": "对话",
|
||||||
"sendOnEnter": "回车发送",
|
"sendOnEnter": "回车发送",
|
||||||
"sendOnEnterDescription": "回车发送(软键盘)。Cmd/Ctrl+Enter 也可用",
|
"sendOnEnterDescription": "回车发送(软键盘)。Cmd/Ctrl+Enter 也可用",
|
||||||
|
|||||||
@@ -473,6 +473,302 @@ class TweakcnThemes {
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Catppuccin (from @catppuccin.css)
|
||||||
|
static final TweakcnThemeVariant _catppuccinLight = TweakcnThemeVariant(
|
||||||
|
background: const Color(0xFFEFF1F5),
|
||||||
|
foreground: const Color(0xFF4C4F69),
|
||||||
|
card: const Color(0xFFFFFFFF),
|
||||||
|
cardForeground: const Color(0xFF4C4F69),
|
||||||
|
popover: const Color(0xFFCCD0DA),
|
||||||
|
popoverForeground: const Color(0xFF4C4F69),
|
||||||
|
primary: const Color(0xFF8839EF),
|
||||||
|
primaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
secondary: const Color(0xFFCCD0DA),
|
||||||
|
secondaryForeground: const Color(0xFF4C4F69),
|
||||||
|
muted: const Color(0xFFDCE0E8),
|
||||||
|
mutedForeground: const Color(0xFF6C6F85),
|
||||||
|
accent: const Color(0xFF04A5E5),
|
||||||
|
accentForeground: const Color(0xFFFFFFFF),
|
||||||
|
destructive: const Color(0xFFD20F39),
|
||||||
|
destructiveForeground: const Color(0xFFFFFFFF),
|
||||||
|
border: const Color(0xFFBCC0CC),
|
||||||
|
input: const Color(0xFFCCD0DA),
|
||||||
|
ring: const Color(0xFF8839EF),
|
||||||
|
sidebarBackground: const Color(0xFFE6E9EF),
|
||||||
|
sidebarForeground: const Color(0xFF4C4F69),
|
||||||
|
sidebarPrimary: const Color(0xFF8839EF),
|
||||||
|
sidebarPrimaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
sidebarAccent: const Color(0xFFDCE0E8),
|
||||||
|
sidebarAccentForeground: const Color(0xFF4C4F69),
|
||||||
|
sidebarBorder: const Color(0xFFBCC0CC),
|
||||||
|
sidebarRing: const Color(0xFF8839EF),
|
||||||
|
success: const Color(0xFF40A02B), // chart-3
|
||||||
|
successForeground: const Color(0xFF4C4F69),
|
||||||
|
warning: const Color(0xFFFE640B), // chart-4
|
||||||
|
warningForeground: const Color(0xFF4C4F69),
|
||||||
|
info: const Color(0xFF04A5E5), // chart-2
|
||||||
|
infoForeground: const Color(0xFFFFFFFF),
|
||||||
|
radius: 6,
|
||||||
|
fontSans: const <String>[
|
||||||
|
'Montserrat',
|
||||||
|
'ui-sans-serif',
|
||||||
|
'system-ui',
|
||||||
|
'-apple-system',
|
||||||
|
'BlinkMacSystemFont',
|
||||||
|
'Segoe UI',
|
||||||
|
'Roboto',
|
||||||
|
'Helvetica Neue',
|
||||||
|
'Arial',
|
||||||
|
'Noto Sans',
|
||||||
|
'sans-serif',
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol',
|
||||||
|
'Noto Color Emoji',
|
||||||
|
],
|
||||||
|
fontSerif: const <String>[
|
||||||
|
'Georgia',
|
||||||
|
'ui-serif',
|
||||||
|
'Cambria',
|
||||||
|
'Times New Roman',
|
||||||
|
'Times',
|
||||||
|
'serif',
|
||||||
|
],
|
||||||
|
fontMono: const <String>[
|
||||||
|
'Fira Code',
|
||||||
|
'ui-monospace',
|
||||||
|
'SFMono-Regular',
|
||||||
|
'Menlo',
|
||||||
|
'Monaco',
|
||||||
|
'Consolas',
|
||||||
|
'Liberation Mono',
|
||||||
|
'Courier New',
|
||||||
|
'monospace',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
static final TweakcnThemeVariant _catppuccinDark = TweakcnThemeVariant(
|
||||||
|
background: const Color(0xFF181825),
|
||||||
|
foreground: const Color(0xFFCDD6F4),
|
||||||
|
card: const Color(0xFF1E1E2E),
|
||||||
|
cardForeground: const Color(0xFFCDD6F4),
|
||||||
|
popover: const Color(0xFF45475A),
|
||||||
|
popoverForeground: const Color(0xFFCDD6F4),
|
||||||
|
primary: const Color(0xFFCBA6F7),
|
||||||
|
primaryForeground: const Color(0xFF1E1E2E),
|
||||||
|
secondary: const Color(0xFF585B70),
|
||||||
|
secondaryForeground: const Color(0xFFCDD6F4),
|
||||||
|
muted: const Color(0xFF292C3C),
|
||||||
|
mutedForeground: const Color(0xFFA6ADC8),
|
||||||
|
accent: const Color(0xFF89DCEB),
|
||||||
|
accentForeground: const Color(0xFF1E1E2E),
|
||||||
|
destructive: const Color(0xFFF38BA8),
|
||||||
|
destructiveForeground: const Color(0xFF1E1E2E),
|
||||||
|
border: const Color(0xFF313244),
|
||||||
|
input: const Color(0xFF313244),
|
||||||
|
ring: const Color(0xFFCBA6F7),
|
||||||
|
sidebarBackground: const Color(0xFF11111B),
|
||||||
|
sidebarForeground: const Color(0xFFCDD6F4),
|
||||||
|
sidebarPrimary: const Color(0xFFCBA6F7),
|
||||||
|
sidebarPrimaryForeground: const Color(0xFF1E1E2E),
|
||||||
|
sidebarAccent: const Color(0xFF292C3C),
|
||||||
|
sidebarAccentForeground: const Color(0xFFCDD6F4),
|
||||||
|
sidebarBorder: const Color(0xFF45475A),
|
||||||
|
sidebarRing: const Color(0xFFCBA6F7),
|
||||||
|
success: const Color(0xFFA6E3A1), // chart-3
|
||||||
|
successForeground: const Color(0xFF181825),
|
||||||
|
warning: const Color(0xFFFAB387), // chart-4
|
||||||
|
warningForeground: const Color(0xFF181825),
|
||||||
|
info: const Color(0xFF89DCEB), // chart-2
|
||||||
|
infoForeground: const Color(0xFF181825),
|
||||||
|
radius: 6,
|
||||||
|
fontSans: const <String>[
|
||||||
|
'Montserrat',
|
||||||
|
'ui-sans-serif',
|
||||||
|
'system-ui',
|
||||||
|
'-apple-system',
|
||||||
|
'BlinkMacSystemFont',
|
||||||
|
'Segoe UI',
|
||||||
|
'Roboto',
|
||||||
|
'Helvetica Neue',
|
||||||
|
'Arial',
|
||||||
|
'Noto Sans',
|
||||||
|
'sans-serif',
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol',
|
||||||
|
'Noto Color Emoji',
|
||||||
|
],
|
||||||
|
fontSerif: const <String>[
|
||||||
|
'Georgia',
|
||||||
|
'ui-serif',
|
||||||
|
'Cambria',
|
||||||
|
'Times New Roman',
|
||||||
|
'Times',
|
||||||
|
'serif',
|
||||||
|
],
|
||||||
|
fontMono: const <String>[
|
||||||
|
'Fira Code',
|
||||||
|
'ui-monospace',
|
||||||
|
'SFMono-Regular',
|
||||||
|
'Menlo',
|
||||||
|
'Monaco',
|
||||||
|
'Consolas',
|
||||||
|
'Liberation Mono',
|
||||||
|
'Courier New',
|
||||||
|
'monospace',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
// Tangerine (from @tangerine.css)
|
||||||
|
static final TweakcnThemeVariant _tangerineLight = TweakcnThemeVariant(
|
||||||
|
background: const Color(0xFFE8EBED),
|
||||||
|
foreground: const Color(0xFF333333),
|
||||||
|
card: const Color(0xFFFFFFFF),
|
||||||
|
cardForeground: const Color(0xFF333333),
|
||||||
|
popover: const Color(0xFFFFFFFF),
|
||||||
|
popoverForeground: const Color(0xFF333333),
|
||||||
|
primary: const Color(0xFFE05D38),
|
||||||
|
primaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
secondary: const Color(0xFFF3F4F6),
|
||||||
|
secondaryForeground: const Color(0xFF4B5563),
|
||||||
|
muted: const Color(0xFFF9FAFB),
|
||||||
|
mutedForeground: const Color(0xFF6B7280),
|
||||||
|
accent: const Color(0xFFD6E4F0),
|
||||||
|
accentForeground: const Color(0xFF1E3A8A),
|
||||||
|
destructive: const Color(0xFFEF4444),
|
||||||
|
destructiveForeground: const Color(0xFFFFFFFF),
|
||||||
|
border: const Color(0xFFDCDFE2),
|
||||||
|
input: const Color(0xFFF4F5F7),
|
||||||
|
ring: const Color(0xFFE05D38),
|
||||||
|
sidebarBackground: const Color(0xFFDDDFE2),
|
||||||
|
sidebarForeground: const Color(0xFF333333),
|
||||||
|
sidebarPrimary: const Color(0xFFE05D38),
|
||||||
|
sidebarPrimaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
sidebarAccent: const Color(0xFFD6E4F0),
|
||||||
|
sidebarAccentForeground: const Color(0xFF1E3A8A),
|
||||||
|
sidebarBorder: const Color(0xFFE5E7EB),
|
||||||
|
sidebarRing: const Color(0xFFE05D38),
|
||||||
|
success: const Color(0xFF86A7C8),
|
||||||
|
successForeground: const Color(0xFF333333),
|
||||||
|
warning: const Color(0xFFEEA591),
|
||||||
|
warningForeground: const Color(0xFF333333),
|
||||||
|
info: const Color(0xFF334C82),
|
||||||
|
infoForeground: const Color(0xFFFFFFFF),
|
||||||
|
radius: 12,
|
||||||
|
fontSans: const <String>[
|
||||||
|
'Inter',
|
||||||
|
'ui-sans-serif',
|
||||||
|
'system-ui',
|
||||||
|
'-apple-system',
|
||||||
|
'BlinkMacSystemFont',
|
||||||
|
'Segoe UI',
|
||||||
|
'Roboto',
|
||||||
|
'Helvetica Neue',
|
||||||
|
'Arial',
|
||||||
|
'Noto Sans',
|
||||||
|
'sans-serif',
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol',
|
||||||
|
'Noto Color Emoji',
|
||||||
|
],
|
||||||
|
fontSerif: const <String>[
|
||||||
|
'Source Serif 4',
|
||||||
|
'ui-serif',
|
||||||
|
'Georgia',
|
||||||
|
'Cambria',
|
||||||
|
'Times New Roman',
|
||||||
|
'Times',
|
||||||
|
'serif',
|
||||||
|
],
|
||||||
|
fontMono: const <String>[
|
||||||
|
'JetBrains Mono',
|
||||||
|
'ui-monospace',
|
||||||
|
'SFMono-Regular',
|
||||||
|
'Menlo',
|
||||||
|
'Monaco',
|
||||||
|
'Consolas',
|
||||||
|
'Liberation Mono',
|
||||||
|
'Courier New',
|
||||||
|
'monospace',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
static final TweakcnThemeVariant _tangerineDark = TweakcnThemeVariant(
|
||||||
|
background: const Color(0xFF1C2433),
|
||||||
|
foreground: const Color(0xFFE5E5E5),
|
||||||
|
card: const Color(0xFF2A3040),
|
||||||
|
cardForeground: const Color(0xFFE5E5E5),
|
||||||
|
popover: const Color(0xFF262B38),
|
||||||
|
popoverForeground: const Color(0xFFE5E5E5),
|
||||||
|
primary: const Color(0xFFE05D38),
|
||||||
|
primaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
secondary: const Color(0xFF2A303E),
|
||||||
|
secondaryForeground: const Color(0xFFE5E5E5),
|
||||||
|
muted: const Color(0xFF2A303E),
|
||||||
|
mutedForeground: const Color(0xFFA3A3A3),
|
||||||
|
accent: const Color(0xFF2A3656),
|
||||||
|
accentForeground: const Color(0xFFBFDBFE),
|
||||||
|
destructive: const Color(0xFFEF4444),
|
||||||
|
destructiveForeground: const Color(0xFFFFFFFF),
|
||||||
|
border: const Color(0xFF3D4354),
|
||||||
|
input: const Color(0xFF3D4354),
|
||||||
|
ring: const Color(0xFFE05D38),
|
||||||
|
sidebarBackground: const Color(0xFF2A303F),
|
||||||
|
sidebarForeground: const Color(0xFFE5E5E5),
|
||||||
|
sidebarPrimary: const Color(0xFFE05D38),
|
||||||
|
sidebarPrimaryForeground: const Color(0xFFFFFFFF),
|
||||||
|
sidebarAccent: const Color(0xFF2A3656),
|
||||||
|
sidebarAccentForeground: const Color(0xFFBFDBFE),
|
||||||
|
sidebarBorder: const Color(0xFF3D4354),
|
||||||
|
sidebarRing: const Color(0xFFE05D38),
|
||||||
|
success: const Color(0xFF86A7C8),
|
||||||
|
successForeground: const Color(0xFF1C2433),
|
||||||
|
warning: const Color(0xFFE6A08F),
|
||||||
|
warningForeground: const Color(0xFF1C2433),
|
||||||
|
info: const Color(0xFF466494),
|
||||||
|
infoForeground: const Color(0xFF1C2433),
|
||||||
|
radius: 12,
|
||||||
|
fontSans: const <String>[
|
||||||
|
'Inter',
|
||||||
|
'ui-sans-serif',
|
||||||
|
'system-ui',
|
||||||
|
'-apple-system',
|
||||||
|
'BlinkMacSystemFont',
|
||||||
|
'Segoe UI',
|
||||||
|
'Roboto',
|
||||||
|
'Helvetica Neue',
|
||||||
|
'Arial',
|
||||||
|
'Noto Sans',
|
||||||
|
'sans-serif',
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol',
|
||||||
|
'Noto Color Emoji',
|
||||||
|
],
|
||||||
|
fontSerif: const <String>[
|
||||||
|
'Source Serif 4',
|
||||||
|
'ui-serif',
|
||||||
|
'Georgia',
|
||||||
|
'Cambria',
|
||||||
|
'Times New Roman',
|
||||||
|
'Times',
|
||||||
|
'serif',
|
||||||
|
],
|
||||||
|
fontMono: const <String>[
|
||||||
|
'JetBrains Mono',
|
||||||
|
'ui-monospace',
|
||||||
|
'SFMono-Regular',
|
||||||
|
'Menlo',
|
||||||
|
'Monaco',
|
||||||
|
'Consolas',
|
||||||
|
'Liberation Mono',
|
||||||
|
'Courier New',
|
||||||
|
'monospace',
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
static final TweakcnThemeDefinition claude = TweakcnThemeDefinition(
|
static final TweakcnThemeDefinition claude = TweakcnThemeDefinition(
|
||||||
id: 'claude',
|
id: 'claude',
|
||||||
label: 'Claude',
|
label: 'Claude',
|
||||||
@@ -512,7 +808,39 @@ class TweakcnThemes {
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
static List<TweakcnThemeDefinition> all = [conduit, claude, t3Chat];
|
static final TweakcnThemeDefinition catppuccin = TweakcnThemeDefinition(
|
||||||
|
id: 'catppuccin',
|
||||||
|
label: 'Catppuccin',
|
||||||
|
description: 'Soft pastel palette.',
|
||||||
|
light: _catppuccinLight,
|
||||||
|
dark: _catppuccinDark,
|
||||||
|
preview: const <Color>[
|
||||||
|
Color(0xFF8839EF), // primary
|
||||||
|
Color(0xFF04A5E5), // accent
|
||||||
|
Color(0xFFEFF1F5), // background
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
static final TweakcnThemeDefinition tangerine = TweakcnThemeDefinition(
|
||||||
|
id: 'tangerine',
|
||||||
|
label: 'Tangerine',
|
||||||
|
description: 'Warm orange-and-slate palette.',
|
||||||
|
light: _tangerineLight,
|
||||||
|
dark: _tangerineDark,
|
||||||
|
preview: const <Color>[
|
||||||
|
Color(0xFFE05D38), // primary
|
||||||
|
Color(0xFFD6E4F0), // accent
|
||||||
|
Color(0xFFE8EBED), // background
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
static List<TweakcnThemeDefinition> all = [
|
||||||
|
conduit,
|
||||||
|
claude,
|
||||||
|
t3Chat,
|
||||||
|
catppuccin,
|
||||||
|
tangerine,
|
||||||
|
];
|
||||||
|
|
||||||
static TweakcnThemeDefinition byId(String? id) {
|
static TweakcnThemeDefinition byId(String? id) {
|
||||||
return all.firstWhere((theme) => theme.id == id, orElse: () => conduit);
|
return all.firstWhere((theme) => theme.id == id, orElse: () => conduit);
|
||||||
|
|||||||
@@ -63,9 +63,7 @@ Future<void> showConduitContextMenu({
|
|||||||
title: Text(
|
title: Text(
|
||||||
action.label,
|
action.label,
|
||||||
style: AppTypography.standard.copyWith(
|
style: AppTypography.standard.copyWith(
|
||||||
color: action.destructive
|
color: action.destructive ? Colors.red : theme.textPrimary,
|
||||||
? Colors.red
|
|
||||||
: theme.textPrimary,
|
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user