|
1 | 1 | import { useCallback } from 'react' |
2 | 2 | import { Outlet, useLocation, useNavigate } from 'react-router-dom' |
3 | 3 |
|
4 | | -import { Badge, Icon, Spacer, Tabs, TabsList, TabsTrigger } from '@components/index' |
| 4 | +import { Badge, Icon, IconProps, Spacer, Tabs, TabsList, TabsTrigger } from '@components/index' |
5 | 5 | import { TabsTriggerProps } from '@radix-ui/react-tabs' |
6 | 6 | import { TranslationStore } from '@views/repo' |
7 | 7 | import { PullRequestHeader } from '@views/repo/pull-request/components/pull-request-header' |
8 | 8 | import { IPullRequestStore } from '@views/repo/pull-request/pull-request.types' |
9 | 9 |
|
10 | 10 | import { SandboxLayout } from '..' |
11 | 11 |
|
| 12 | +const TabTitleWithIcon = ({ icon, title }: { icon: IconProps['name']; title: string }) => ( |
| 13 | + <div className="flex items-center gap-x-1"> |
| 14 | + <Icon size={14} name={icon} /> |
| 15 | + {title} |
| 16 | + </div> |
| 17 | +) |
| 18 | + |
12 | 19 | interface PullRequestLayoutProps { |
13 | 20 | usePullRequestStore: () => IPullRequestStore |
14 | 21 | spaceId?: string |
@@ -78,25 +85,16 @@ const PullRequestLayout: React.FC<PullRequestLayoutProps> = ({ |
78 | 85 | <Tabs variant="tabnav"> |
79 | 86 | <TabsList className="left-1/2 w-[calc(100%+48px)] -translate-x-1/2 px-6"> |
80 | 87 | <TabsTrigger {...getTabProps(PullRequestTabsKeys.CONVERSATION)}> |
81 | | - <div className="flex items-center gap-x-1"> |
82 | | - <Icon size={14} name="comments" /> |
83 | | - {t('views:pullRequests.conversation')} |
84 | | - </div> |
| 88 | + <TabTitleWithIcon icon="comments" title={t('views:pullRequests.conversation', 'Conversation')} /> |
85 | 89 | </TabsTrigger> |
86 | 90 | <TabsTrigger {...getTabProps(PullRequestTabsKeys.COMMITS)}> |
87 | | - <div className="flex items-center gap-x-1"> |
88 | | - <Icon size={14} name="tube-sign" /> |
89 | | - {t('views:repos.commits')} |
90 | | - </div> |
| 91 | + <TabTitleWithIcon icon="tube-sign" title={t('views:pullRequests.commits', 'Commits')} /> |
91 | 92 | <Badge variant="outline" size="xs" borderRadius="base"> |
92 | 93 | {pullRequest?.stats?.commits} |
93 | 94 | </Badge> |
94 | 95 | </TabsTrigger> |
95 | 96 | <TabsTrigger {...getTabProps(PullRequestTabsKeys.CHANGES)}> |
96 | | - <div className="flex items-center gap-x-1"> |
97 | | - <Icon size={14} name="changes" /> |
98 | | - {t('views:pullRequests.changes')} |
99 | | - </div> |
| 97 | + <TabTitleWithIcon icon="changes" title={t('views:pullRequests.changes', 'Changes')} /> |
100 | 98 | <Badge variant="outline" size="xs" borderRadius="base"> |
101 | 99 | {pullRequest?.stats?.files_changed} |
102 | 100 | </Badge> |
|
0 commit comments