chore: remove experimental tags from themes, plugins, and sender favicons settings
This commit is contained in:
@@ -111,7 +111,6 @@ interface TabDef {
|
||||
label: string;
|
||||
icon: LucideIcon;
|
||||
group: TabGroup;
|
||||
experimental?: boolean;
|
||||
}
|
||||
|
||||
const tabIcons: Record<Tab, LucideIcon> = {
|
||||
@@ -588,8 +587,8 @@ export default function SettingsPage() {
|
||||
|
||||
// Advanced
|
||||
{ id: 'about_data', label: t('tabs.about_data'), icon: tabIcons.about_data, group: 'advanced' },
|
||||
...(isFeatureEnabled('themesEnabled') ? [{ id: 'themes' as Tab, label: 'Themes', icon: tabIcons.themes, group: 'advanced' as TabGroup, experimental: true }] : []),
|
||||
...(isFeatureEnabled('pluginsEnabled') ? [{ id: 'plugins' as Tab, label: 'Plugins', icon: tabIcons.plugins, group: 'advanced' as TabGroup, experimental: true }] : []),
|
||||
...(isFeatureEnabled('themesEnabled') ? [{ id: 'themes' as Tab, label: 'Themes', icon: tabIcons.themes, group: 'advanced' as TabGroup }] : []),
|
||||
...(isFeatureEnabled('pluginsEnabled') ? [{ id: 'plugins' as Tab, label: 'Plugins', icon: tabIcons.plugins, group: 'advanced' as TabGroup }] : []),
|
||||
...(isFeatureEnabled('debugModeEnabled') ? [{ id: 'debug' as Tab, label: t('tabs.debug'), icon: tabIcons.debug, group: 'advanced' as TabGroup }] : []),
|
||||
];
|
||||
|
||||
@@ -774,11 +773,6 @@ export default function SettingsPage() {
|
||||
<span className="flex items-center gap-3">
|
||||
<Icon className="w-4 h-4 text-muted-foreground" />
|
||||
{tab.label}
|
||||
{tab.experimental && (
|
||||
<span className="text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-warning/15 text-warning">
|
||||
Experimental
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
<ChevronRight className="w-4 h-4 text-muted-foreground" />
|
||||
</button>
|
||||
@@ -918,11 +912,6 @@ export default function SettingsPage() {
|
||||
effectiveActiveTab === tab.id ? 'text-accent-foreground' : 'text-muted-foreground'
|
||||
)} />
|
||||
{tab.label}
|
||||
{tab.experimental && (
|
||||
<span className="ml-auto text-[10px] font-medium px-1.5 py-0.5 rounded-full bg-warning/15 text-warning shrink-0">
|
||||
Experimental
|
||||
</span>
|
||||
)}
|
||||
</button>
|
||||
{subs.map((sub) => (
|
||||
<button
|
||||
|
||||
@@ -71,7 +71,7 @@ export function PluginsSettings() {
|
||||
};
|
||||
|
||||
return (
|
||||
<SettingsSection title="Plugins" description="Plugins deployed by your administrator. Toggle to enable or disable for your account." experimental experimentalDescription="Plugins is an experimental feature. The plugin API is not yet stable and may change between releases, which could break existing plugins. Plugins run in a sandboxed environment but have access to your data within the application.">
|
||||
<SettingsSection title="Plugins" description="Plugins deployed by your administrator. Toggle to enable or disable for your account.">
|
||||
{/* Plugin List */}
|
||||
{plugins.length === 0 ? (
|
||||
<div className="flex flex-col items-center justify-center py-12 text-center">
|
||||
|
||||
@@ -1,29 +1,16 @@
|
||||
import { ReactNode } from 'react';
|
||||
import { Lock, FlaskConical } from 'lucide-react';
|
||||
import { Lock } from 'lucide-react';
|
||||
import { cn } from '@/lib/utils';
|
||||
|
||||
interface SettingsSectionProps {
|
||||
title: string;
|
||||
description?: string;
|
||||
children: ReactNode;
|
||||
experimental?: boolean;
|
||||
experimentalDescription?: string;
|
||||
}
|
||||
|
||||
export function SettingsSection({ title, description, children, experimental, experimentalDescription }: SettingsSectionProps) {
|
||||
export function SettingsSection({ title, description, children }: SettingsSectionProps) {
|
||||
return (
|
||||
<div data-search-label={title} className="space-y-4">
|
||||
{experimental && (
|
||||
<div className="flex gap-3 rounded-lg border border-amber-300 bg-amber-50 p-3 dark:border-amber-700 dark:bg-amber-950/30">
|
||||
<FlaskConical className="w-5 h-5 text-amber-600 dark:text-amber-400 mt-0.5 shrink-0" />
|
||||
<div>
|
||||
<p className="text-sm font-medium text-amber-800 dark:text-amber-300">Experimental Feature</p>
|
||||
{experimentalDescription && (
|
||||
<p className="text-xs text-amber-700 dark:text-amber-400/80 mt-1">{experimentalDescription}</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<h3 className="text-lg font-medium text-foreground">{title}</h3>
|
||||
{description && (
|
||||
|
||||
@@ -47,7 +47,7 @@ export function ThemesSettings() {
|
||||
};
|
||||
|
||||
return (
|
||||
<SettingsSection title="Themes" description="Choose from themes deployed by your administrator and built-in presets." experimental experimentalDescription="Themes is an experimental feature. Custom themes may not cover all UI elements, and theme formats could change in future updates. Built-in presets are stable.">
|
||||
<SettingsSection title="Themes" description="Choose from themes deployed by your administrator and built-in presets.">
|
||||
|
||||
{forcedThemeId && (
|
||||
<div className="mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-300">
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Synchronizovat nastavení mezi prohlížeči a zařízeními"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favikony odesílatelů (experimentální)",
|
||||
"label": "Favikony odesílatelů",
|
||||
"description": "Zobrazovat ikony webových stránek jako profilové obrázky firemních odesílatelů"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Synchronisieren Sie Ihre Einstellungen über Browser und Geräte hinweg"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Absender-Favicons (Experimentell)",
|
||||
"label": "Absender-Favicons",
|
||||
"description": "Website-Symbole als Profilbilder für geschäftliche Absender anzeigen"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1367,7 +1367,7 @@
|
||||
"description": "Sync your settings across browsers and devices"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Sender Favicons (Experimental)",
|
||||
"label": "Sender Favicons",
|
||||
"description": "Show website icons as profile pictures for business senders"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Sincronice sus ajustes entre navegadores y dispositivos"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favicons de remitente (Experimental)",
|
||||
"label": "Favicons de remitente",
|
||||
"description": "Mostrar iconos de sitios web como fotos de perfil para remitentes empresariales"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Synchronisez vos paramètres entre navigateurs et appareils"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favicons des expéditeurs (Expérimental)",
|
||||
"label": "Favicons des expéditeurs",
|
||||
"description": "Afficher les icônes de sites web comme photos de profil pour les expéditeurs professionnels"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Sincronizza le impostazioni tra browser e dispositivi"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favicon dei mittenti (Sperimentale)",
|
||||
"label": "Favicon dei mittenti",
|
||||
"description": "Mostra le icone dei siti web come immagini profilo per i mittenti aziendali"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "ブラウザーやデバイス間で設定を同期します"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "送信者ファビコン(実験的)",
|
||||
"label": "送信者ファビコン",
|
||||
"description": "ビジネス送信者のプロフィール画像としてウェブサイトアイコンを表示"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "여러 브라우저나 기기에서 내 설정을 동기화해요"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "보낸 사람 파비콘 (실험적 기능)",
|
||||
"label": "보낸 사람 파비콘",
|
||||
"description": "비즈니스 메일의 경우 해당 웹사이트의 아이콘을 프로필 사진으로 보여줘요"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1345,7 +1345,7 @@
|
||||
"description": "Sinhronizēt iestatījumus starp dažādiem pārlūkiem un ierīcēm"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Sūtītāju ikonas (Eksperimentāli)",
|
||||
"label": "Sūtītāju ikonas",
|
||||
"description": "Rādīt vietņu ikonas kā sūtītāju avatarus"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Synchroniseer uw instellingen tussen browsers en apparaten"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Afzender-favicons (Experimenteel)",
|
||||
"label": "Afzender-favicons",
|
||||
"description": "Toon websitepictogrammen als profielfoto's voor zakelijke afzenders"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Synchronizuj ustawienia między przeglądarkami i urządzeniami"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favikony nadawców (eksperymentalne)",
|
||||
"label": "Favikony nadawców",
|
||||
"description": "Pokazuj ikony stron internetowych jako zdjęcia profilowe nadawców firmowych"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Sincronize suas configurações entre navegadores e dispositivos"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favicons de remetente (Experimental)",
|
||||
"label": "Favicons de remetente",
|
||||
"description": "Exibir ícones de sites como fotos de perfil para remetentes empresariais"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Синхронизировать настройки между браузерами и устройствами"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Фавиконы отправителей (Экспериментально)",
|
||||
"label": "Фавиконы отправителей",
|
||||
"description": "Показывать иконки сайтов как аватары для корпоративных отправителей"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Ayarlarınızı tarayıcılar ve cihazlar arasında senkronize edin"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Gönderici Favorikonları (Deneysel)",
|
||||
"label": "Gönderici Favorikonları",
|
||||
"description": "İş göndericileri için profil resmi olarak web sitesi simgelerini göster"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "Синхронізуйте налаштування між браузерами та пристроями"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "Favicons відправника (експериментальний)",
|
||||
"label": "Favicons відправника",
|
||||
"description": "Показувати піктограми веб-сайтів як зображення профілю для бізнес-відправників"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
"description": "跨浏览器和设备同步您的设置"
|
||||
},
|
||||
"sender_favicons": {
|
||||
"label": "发件人图标(实验性)",
|
||||
"label": "发件人图标",
|
||||
"description": "使用企业发件人的网站图标作为头像"
|
||||
},
|
||||
"show_avatars_in_junk": {
|
||||
|
||||
@@ -190,7 +190,6 @@ interface SettingsState {
|
||||
// Email Display
|
||||
disableThreading: boolean; // Show emails as individual messages instead of grouped by conversation
|
||||
|
||||
// Experimental
|
||||
senderFavicons: boolean;
|
||||
showAvatarsInJunk: boolean; // Show profile images/favicons in the junk folder
|
||||
|
||||
@@ -343,7 +342,6 @@ const DEFAULT_SETTINGS = {
|
||||
// Email Display
|
||||
disableThreading: false,
|
||||
|
||||
// Experimental
|
||||
senderFavicons: true,
|
||||
showAvatarsInJunk: false,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user