Skip to main content

View Organization Block

The ViewOrganization Component is a fully customizable and accessible organization display component built with React, TypeScript, and MUI. It provides a complete interface for displaying organization information with modern design patterns, flexible layout options, and comprehensive customization capabilities.


๐Ÿš€ Installationโ€‹

npm install @nodeblocks/frontend-view-organization-block@0.2.0

๐Ÿ“– Usageโ€‹

import {ViewOrganization} from '@nodeblocks/frontend-view-organization-block';

Live Editor
function BasicViewOrganization() {
  return (
    <ViewOrganization
      labels={{
        companyAbout: 'About Company',
        companyActivities: 'Business Activities',
        companyRegisteredInformation: 'Registered Information',
      }}
      companyLogoUrl="/img/icon.png"
      companyName="Tech Solutions Inc."
      companyTags={[
        {icon: undefined, value: 'Technology'},
        {icon: undefined, value: 'San Francisco'},
      ]}
      companyAbout="We are a leading technology company focused on innovative solutions."
      companyActivities="Software development, consulting, and digital transformation services."
      companyRegisteredInformation={[
        {label: 'Registration Number:', value: '12345678'},
        {label: 'Tax ID:', value: 'TAX-987654321'},
        {label: 'Founded:', value: '2010'},
      ]}
    >
      <ViewOrganization.CompanyBanner />
      <ViewOrganization.CompanyName />
      <ViewOrganization.Tags />
      <ViewOrganization.AboutCompany />
      <ViewOrganization.BusinessActivities />
      <ViewOrganization.CorporateInformation />
    </ViewOrganization>
  );
}
Result
Loading...

๐Ÿ”ง Props Referenceโ€‹

Main Component Propsโ€‹

PropTypeDefaultDescription
labelsLabelsRequiredLabels configuration for different sections
labels.companyAboutReactNodeundefinedLabel for the company about section
labels.companyActivitiesReactNodeundefinedLabel for the company activities section
labels.companyRegisteredInformationReactNodeundefinedLabel for the registered information section
companyLogoUrlstringundefinedURL for the company logo image
companyNameReactNodeundefinedCompany name to display
companyTagsArray<{icon?: SvgIconComponent, value: string}>undefinedArray of tags with MUI icons and values
companyAboutReactNodeundefinedCompany about description content
companyActivitiesReactNodeundefinedCompany activities description content
companyRegisteredInformationArray<{label: ReactNode, value: string}>undefinedArray of registered information items
childrenBlocksOverrideundefinedFunction to override default blocks
classNamestringundefinedAdditional CSS class name for styling the container

Note: The main component inherits MUI Stack props. Root container uses direction="column", spacing={3}, and sx={{ p: 3 }} by default.

Sub-Componentsโ€‹

The ViewOrganization component provides several sub-components. All sub-components receive their default values from the main component's context and can override these values through props.

ViewOrganization.Tagโ€‹

Displays a single tag with an optional icon.

PropTypeDefaultDescription
iconSvgIconComponentundefinedMUI icon component to display
labelReactNodeundefinedText content of the tag (can be array for multiple values)
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits MUI Box props. Uses display: 'inline-flex', alignItems: 'center', gap: 1.5.

ViewOrganization.Titleโ€‹

Displays the organization title/name.

PropTypeDefaultDescription
prefixReactNodeundefinedContent to display before the title
companyNameReactNodeFrom contextCompany name to display as title
childrenReactNodecompanyNameTitle content - overrides companyName if provided
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits MUI Box props. Uses Typography with variant="h6", component="h6", fontWeight="bold".

ViewOrganization.DescriptionDetailBlockโ€‹

A reusable block for displaying labeled content with an optional icon.

PropTypeDefaultDescription
iconSvgIconComponentStickyNote2OutlinedMUI icon component for the label
labelReactNodeundefinedLabel text for the detail block
valueReactNodeundefinedValue content for the detail block
childrenReactNodeDefault layoutCustom content - overrides default label/value layout
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits MUI Stack props with direction="column", spacing={2}.

ViewOrganization.CompanyBannerโ€‹

Displays the company logo/banner image.

PropTypeDefaultDescription
companyLogoUrlstringFrom contextURL for the company logo image
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits DescriptionDetailBlock props. Logo image has height: 60 by default.

ViewOrganization.CompanyNameโ€‹

Displays the company name using the Title component.

PropTypeDefaultDescription
companyNameReactNodeFrom contextCompany name to display
childrenReactNodecompanyNameContent - overrides companyName if provided
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits ViewOrganization.Title props.

ViewOrganization.Tagsโ€‹

Displays a list of company tags.

PropTypeDefaultDescription
companyTagsArray<{icon?: SvgIconComponent, value: string}>From contextArray of tags to display
childrenReactNodeDefault tagsCustom tags content - overrides companyTags if provided
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits MUI Stack props with direction="column", spacing={0.5}.

ViewOrganization.AboutCompanyโ€‹

Displays the company about section.

PropTypeDefaultDescription
companyAboutReactNodeFrom contextCompany about content
labelsLabelsFrom contextLabels for section title
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits DescriptionDetailBlock props. Uses BusinessOutlined icon by default. Default label is "About".

ViewOrganization.BusinessActivitiesโ€‹

Displays the company business activities section.

PropTypeDefaultDescription
companyActivitiesReactNodeFrom contextCompany activities content
labelsLabelsFrom contextLabels for section title
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits DescriptionDetailBlock props. Uses StickyNote2Outlined icon by default. Default label is "Business Activities".

ViewOrganization.CorporateInformationโ€‹

Displays the registered/corporate information in a table-like format.

PropTypeDefaultDescription
companyRegisteredInformationArray<{label: ReactNode, value: string}>From contextArray of registered information items
classNamestringundefinedAdditional CSS class name for styling

Note: This component inherits DescriptionDetailBlock props. Renders items as rows with label (width: 204px) and value columns.


๐ŸŽจ Configuration examplesโ€‹

Custom Styled Componentsโ€‹

import {Typography} from '@mui/material';

function StyledViewOrganizationComponents() {
return (
<ViewOrganization
labels={{
companyAbout: 'About',
companyActivities: 'Activities',
companyRegisteredInformation: 'Info',
}}
companyLogoUrl="/logo.png"
companyName="Styled Company"
companyTags={[{icon: undefined, value: 'Tag 1'}]}
companyAbout="About text"
companyActivities="Activities text"
companyRegisteredInformation={[{label: 'ID:', value: '123'}]}
>
<ViewOrganization.CompanyBanner
sx={{
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
borderRadius: '16px',
p: 4,
}}
/>
<ViewOrganization.CompanyName>
<Typography variant="h4" fontWeight="bold" color="primary">
My Custom Company Name
</Typography>
</ViewOrganization.CompanyName>
<ViewOrganization.Tags />
<ViewOrganization.AboutCompany />
<ViewOrganization.BusinessActivities />
<ViewOrganization.CorporateInformation />
</ViewOrganization>
);
}

Block Override Patternโ€‹

function BlockOverrideViewOrganization() {
return (
<ViewOrganization
labels={{
companyAbout: 'About',
companyActivities: 'Activities',
companyRegisteredInformation: 'Info',
}}
companyLogoUrl="/logo.png"
companyName="Company"
companyTags={[{icon: undefined, value: 'Tag'}]}
companyAbout="About"
companyActivities="Activities"
companyRegisteredInformation={[{label: 'ID:', value: '1'}]}
>
{({defaultBlocks, defaultBlockOrder}) => ({
blocks: {
aboutCompany: {
...defaultBlocks.aboutCompany,
props: {
...defaultBlocks.aboutCompany.props,
sx: {
background: 'linear-gradient(135deg, #f5f7fa 0%, #e4e8eb 100%)',
borderRadius: '16px',
p: 3,
},
},
},
},
blockOrder: defaultBlockOrder,
})}
</ViewOrganization>
);
}

Comprehensive Organization Displayโ€‹

function ComprehensiveOrganization() {
const registeredInfo = [
{label: 'Company Registration:', value: 'REG-2024-12345'},
{label: 'Tax Identification:', value: 'TIN-987654321'},
{label: 'Founded:', value: 'January 2010'},
{label: 'Headquarters:', value: 'San Francisco, CA'},
{label: 'Employees:', value: '500+'},
{label: 'Industry:', value: 'Technology / Software'},
];

return (
<ViewOrganization
labels={{
companyAbout: '๐Ÿข About Our Company',
companyActivities: '๐Ÿ’ผ Our Services',
companyRegisteredInformation: '๐Ÿ“‹ Corporate Information',
}}
companyLogoUrl="/img/logo-large.png"
companyName="Global Tech Solutions Inc."
companyTags={[
{icon: undefined, value: '๐ŸŒ Global Presence'},
{icon: undefined, value: '๐Ÿ† Industry Leader'},
{icon: undefined, value: '๐Ÿš€ Innovation Driven'},
{icon: undefined, value: '๐Ÿ‘ฅ 500+ Employees'},
]}
companyAbout={
<div>
<p>
Global Tech Solutions Inc. is a leading technology company dedicated to transforming businesses through
innovative digital solutions. With over a decade of experience, we have helped hundreds of companies achieve
their digital transformation goals.
</p>
<p style={{marginTop: '12px'}}>
Our team of expert engineers, designers, and consultants work together to deliver cutting-edge solutions
that drive business growth and efficiency.
</p>
</div>
}
companyActivities={
<ul style={{margin: 0, paddingLeft: '20px'}}>
<li>Enterprise Software Development</li>
<li>Cloud Infrastructure Solutions</li>
<li>AI & Machine Learning Services</li>
<li>Digital Transformation Consulting</li>
<li>Cybersecurity Services</li>
<li>24/7 Technical Support</li>
</ul>
}
companyRegisteredInformation={registeredInfo}
sx={{maxWidth: '800px', mx: 'auto'}}
>
<ViewOrganization.CompanyBanner />
<ViewOrganization.CompanyName />
<ViewOrganization.Tags />
<ViewOrganization.AboutCompany />
<ViewOrganization.BusinessActivities />
<ViewOrganization.CorporateInformation />
</ViewOrganization>
);
}

๐Ÿ”ง TypeScript Supportโ€‹

Full TypeScript support with comprehensive type definitions:

import {SvgIconComponent} from '@mui/icons-material';
import {StackProps} from '@mui/material';
import {ViewOrganization} from '@nodeblocks/frontend-view-organization-block';
import {ReactNode} from 'react';

// Labels interface
interface Labels {
companyAbout?: ReactNode;
companyActivities?: ReactNode;
companyRegisteredInformation?: ReactNode;
}

// Tag interface
interface CompanyTag {
icon: SvgIconComponent | undefined;
value: string;
}

// Registered information interface
interface RegisteredInfo {
label: ReactNode;
value: string;
}

// Main component props interface
interface ViewOrganizationProps extends Omit<StackProps, 'children'> {
labels: Labels;
companyLogoUrl?: string;
companyName?: ReactNode;
companyTags?: CompanyTag[];
companyAbout?: ReactNode;
companyActivities?: ReactNode;
companyRegisteredInformation?: RegisteredInfo[];
}

function TypedViewOrganizationExample() {
const organizationData: Omit<ViewOrganizationProps, 'children'> = {
labels: {
companyAbout: 'About Our Company',
companyActivities: 'What We Do',
companyRegisteredInformation: 'Legal Information',
},
companyLogoUrl: 'https://example.com/logo.png',
companyName: 'Tech Solutions Inc.',
companyTags: [
{icon: undefined, value: 'Technology'},
{icon: undefined, value: 'San Francisco'},
],
companyAbout: 'We are a leading technology company...',
companyActivities: 'Software development, consulting...',
companyRegisteredInformation: [
{label: 'Registration Number:', value: '12345678'},
{label: 'Tax ID:', value: 'TAX-987654321'},
],
};

return (
<ViewOrganization {...organizationData}>
<ViewOrganization.CompanyBanner />
<ViewOrganization.CompanyName />
<ViewOrganization.Tags />
<ViewOrganization.AboutCompany />
<ViewOrganization.BusinessActivities />
<ViewOrganization.CorporateInformation />
</ViewOrganization>
);
}

๐Ÿ“ Notesโ€‹

  • The root component uses MUI's Stack with direction="column", spacing={3}, and sx={{ p: 3 }} padding
  • Icons must be MUI SvgIconComponent types (e.g., BusinessOutlined, LocationOnOutlined)
  • ViewOrganization.Tag displays icon with fontSize="small" and color="primary"
  • ViewOrganization.Title uses MUI Typography with variant="h6" and fontWeight="bold"
  • ViewOrganization.DescriptionDetailBlock is the base component for AboutCompany, BusinessActivities, and CorporateInformation
  • ViewOrganization.AboutCompany uses BusinessOutlined icon by default with fallback label "About"
  • ViewOrganization.BusinessActivities uses StickyNote2Outlined icon by default with fallback label "Business Activities"
  • ViewOrganization.CorporateInformation renders items as rows with borders and fixed label width (204px)
  • Company banner logo has a default height of 60px
  • All sub-components inherit their respective MUI component props and support the sx prop for styling
  • Block override pattern allows customizing, replacing, or reordering default blocks

Built with โค๏ธ using React, TypeScript, and MUI.