Skip to content

Commit dab77db

Browse files
committed
fix: overflow of descriptions with readmore option
1 parent 1bd2fa0 commit dab77db

File tree

8 files changed

+36
-13
lines changed

8 files changed

+36
-13
lines changed

api/api/versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
"version": "v1",
55
"status": "active",
6-
"release_date": "2025-10-15T00:51:50.182090921+05:30",
6+
"release_date": "2025-10-15T21:11:09.336673993+05:30",
77
"end_of_life": "0001-01-01T00:00:00Z",
88
"changes": [
99
"Initial API version"

view/app/extensions/components/extension-card.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import ExtensionForkDialog from './extension-fork-dialog';
1212
import { useDeleteExtensionMutation } from '@/redux/services/extensions/extensionsApi';
1313
import { toast } from 'sonner';
1414

15+
const MAX_DESCRIPTION_CHARS = 90;
16+
1517
interface ExtensionCardProps {
1618
extension: Extension;
1719
onInstall?: (extension: Extension) => void;
@@ -23,6 +25,7 @@ export function ExtensionCard({ extension, onInstall, onViewDetails }: Extension
2325
const [forkOpen, setForkOpen] = React.useState(false);
2426
const [confirmOpen, setConfirmOpen] = React.useState(false);
2527
const [deleteExtension] = useDeleteExtensionMutation();
28+
const [expanded, setExpanded] = React.useState(false);
2629

2730
const onDelete = async () => {
2831
try {
@@ -80,7 +83,17 @@ export function ExtensionCard({ extension, onInstall, onViewDetails }: Extension
8083
</div>
8184

8285
<CardDescription className="text-sm leading-relaxed text-muted-foreground">
83-
{extension.description}
86+
{expanded || extension.description.length <= MAX_DESCRIPTION_CHARS
87+
? extension.description
88+
: `${extension.description.slice(0, MAX_DESCRIPTION_CHARS)}…`}
89+
{extension.description.length > MAX_DESCRIPTION_CHARS && (
90+
<button
91+
className="ml-2 text-primary hover:underline text-sm"
92+
onClick={() => setExpanded((v) => !v)}
93+
>
94+
{expanded ? (t('common.readLess') || 'Read less') : (t('common.readMore') || 'Read more')}
95+
</button>
96+
)}
8497
</CardDescription>
8598
<div className="flex gap-2 pt-6 justify-start">
8699
<Button

view/components/layout/app-sidebar.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ const data = {
2727
icon: Home,
2828
resource: 'dashboard'
2929
},
30+
{
31+
title: 'navigation.extensions',
32+
url: '/extensions',
33+
icon: Puzzle,
34+
resource: 'extensions'
35+
},
3036
{
3137
title: 'navigation.selfHost',
3238
url: '/self-host',
@@ -45,12 +51,6 @@ const data = {
4551
icon: Folder,
4652
resource: 'file-manager'
4753
},
48-
{
49-
title: 'navigation.extensions',
50-
url: '/extensions',
51-
icon: Puzzle,
52-
resource: 'extensions'
53-
},
5454
{
5555
title: 'navigation.settings',
5656
url: '/settings/general',

view/lib/i18n/locales/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
"edit": "Edit",
2020
"preview": "Preview",
2121
"enabled": "Enabled",
22-
"disabled": "Disabled"
22+
"disabled": "Disabled",
23+
"readMore": "Read more",
24+
"readLess": "Read less"
2325
},
2426
"containers": {
2527
"title": "Containers",

view/lib/i18n/locales/es.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
"edit": "Editar",
1919
"preview": "Previsualizar",
2020
"enabled": "Habilitado",
21-
"disabled": "Deshabilitado"
21+
"disabled": "Deshabilitado",
22+
"readMore": "Leer más",
23+
"readLess": "Leer menos"
2224
},
2325
"containers": {
2426
"title": "Contenedores",

view/lib/i18n/locales/fr.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
"edit": "Modifier",
2020
"preview": "Aperçu",
2121
"enabled": "Activé",
22-
"disabled": "Désactivé"
22+
"disabled": "Désactivé",
23+
"readMore": "Lire plus",
24+
"readLess": "Lire moins"
2325
},
2426
"containers": {
2527
"title": "Conteneurs",

view/lib/i18n/locales/kn.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
"edit": "ಸಂಪಾದಿಸಿ",
2020
"preview": "ಪೂರ್ವವೀಕ್ಷಣೆ",
2121
"enabled": "ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ",
22-
"disabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"
22+
"disabled": "ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ",
23+
"readMore": "ಇನ್ನಷ್ಟು ಓದಿ",
24+
"readLess": "ಕಡಿಮೆ ಓದಿ"
2325
},
2426
"containers": {
2527
"title": "ಕನ್ಟೇನರ್ಗಳು",

view/lib/i18n/locales/ml.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
"refreshPage": "പേജ് പുതുക്കുക",
1515
"loading": "ലോഡുചെയ്യുന്നു...",
1616
"enabled": "പ്രവർത്തനസജ്ജമാക്കി",
17-
"disabled": "പ്രവർത്തനരഹിതമാക്കി"
17+
"disabled": "പ്രവർത്തനരഹിതമാക്കി",
18+
"readMore": "കൂടുതൽ വായിക്കുക",
19+
"readLess": "കുറച്ച് വായിക്കുക"
1820
},
1921
"containers": {
2022
"title": "കണ്ടെയ്‌നറുകൾ",

0 commit comments

Comments
 (0)