turash/bugulma/frontend/components/organization/OrganizationDetailsGrid.tsx
Damir Mukimov 6347f42e20
Consolidate repositories: Remove nested frontend .git and merge into main repository
- Remove nested git repository from bugulma/frontend/.git
- Add all frontend files to main repository tracking
- Convert from separate frontend/backend repos to unified monorepo
- Preserve all frontend code and development history as tracked files
- Eliminate nested repository complexity for simpler development workflow

This creates a proper monorepo structure with frontend and backend
coexisting in the same repository for easier development and deployment.
2025-11-25 06:02:57 +01:00

73 lines
2.7 KiB
TypeScript

import React from 'react';
import { useTranslation } from '@/hooks/useI18n.tsx';
import {
canParticipateInResourceMatching,
getOrganizationSubtypeLabel,
} from '@/schemas/organizationSubtype.ts';
import { Organization } from '@/types.ts';
import { MapPin } from 'lucide-react';
import Badge from '@/components/ui/Badge.tsx';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card.tsx';
import { Flex, Grid, Stack } from '@/components/ui/layout';
import ContactDetails from '@/components/organization/ContactDetails.tsx';
import KeyMetrics from '@/components/organization/KeyMetrics.tsx';
interface OrganizationDetailsGridProps {
organization: Organization;
}
const OrganizationDetailsGrid = ({ organization }: OrganizationDetailsGridProps) => {
const { t } = useTranslation();
return (
<Card>
<CardHeader>
<CardTitle>{t('organizationPage.details')}</CardTitle>
</CardHeader>
<CardContent>
<Grid cols={{ md: 2 }} gap="2xl">
<Stack spacing="xl">
<div>
<h3 className="font-semibold mb-4 text-lg">{t('organizationPage.keyMetrics')}</h3>
<KeyMetrics organization={organization} />
{organization.Subtype && (
<div className="mt-4 pt-4 border-t">
<Flex align="center" gap="xs">
<span className="text-sm text-muted-foreground">
{t('organizationPage.organizationType')}:
</span>
<Badge variant="secondary">
{getOrganizationSubtypeLabel(organization.Subtype)}
</Badge>
{canParticipateInResourceMatching(organization.Subtype) && (
<Badge variant="outline" className="text-xs">
{t('organizationPage.participatesInMatching')}
</Badge>
)}
</Flex>
</div>
)}
</div>
</Stack>
<div>
<h3 className="font-semibold mb-4 text-lg">
{t('organizationPage.contactAndLocation')}
</h3>
<Stack spacing="md">
<ContactDetails organization={organization} />
{organization.Address && (
<Flex align="start" gap="sm" className="p-2">
<MapPin className="h-4 mt-1 shrink-0 text-current text-muted-foreground w-4" />
<span className="min-w-0 text-base">{organization.Address}</span>
</Flex>
)}
</Stack>
</div>
</Grid>
</CardContent>
</Card>
);
};
export default React.memo(OrganizationDetailsGrid);