From 5a10f17ab24f2a9ec18e616b3054cebd12c7c25d Mon Sep 17 00:00:00 2001 From: Abhijay Jain Date: Fri, 29 Aug 2025 23:59:02 +0530 Subject: [PATCH] feat: show enabled extensions at top of extensions page (#4423) Signed-off-by: Abhijay007 --- .../subcomponents/ExtensionList.tsx | 64 +++++++++++++++---- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/ui/desktop/src/components/settings/extensions/subcomponents/ExtensionList.tsx b/ui/desktop/src/components/settings/extensions/subcomponents/ExtensionList.tsx index 755aadb6..65e96495 100644 --- a/ui/desktop/src/components/settings/extensions/subcomponents/ExtensionList.tsx +++ b/ui/desktop/src/components/settings/extensions/subcomponents/ExtensionList.tsx @@ -19,22 +19,62 @@ export default function ExtensionList({ isStatic, disableConfiguration: _disableConfiguration, }: ExtensionListProps) { - // Sort extensions alphabetically by their friendly title - const sortedExtensions = [...extensions].sort((a, b) => + // Separate enabled and disabled extensions + const enabledExtensions = extensions.filter((ext) => ext.enabled); + const disabledExtensions = extensions.filter((ext) => !ext.enabled); + // Sort each group alphabetically by their friendly title + const sortedEnabledExtensions = [...enabledExtensions].sort((a, b) => + getFriendlyTitle(a).localeCompare(getFriendlyTitle(b)) + ); + const sortedDisabledExtensions = [...disabledExtensions].sort((a, b) => getFriendlyTitle(a).localeCompare(getFriendlyTitle(b)) ); return ( -
- {sortedExtensions.map((extension) => ( - - ))} +
+ {sortedEnabledExtensions.length > 0 && ( +
+

+ + Enabled Extensions ({sortedEnabledExtensions.length}) +

+
+ {sortedEnabledExtensions.map((extension) => ( + + ))} +
+
+ )} + + {sortedDisabledExtensions.length > 0 && ( +
+

+ + Available Extensions ({sortedDisabledExtensions.length}) +

+
+ {sortedDisabledExtensions.map((extension) => ( + + ))} +
+
+ )} + + {extensions.length === 0 && ( +
No extensions available
+ )}
); }