
Security News
/Research
Popular node-ipc npm Package Infected with Credential Stealer
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.
@ttoss/components
Advanced tools
React components for the ttoss ecosystem. ESM only package.
pnpm add @ttoss/components @ttoss/ui @emotion/react @ttoss/react-hooks
View all components in Storybook
All components are theme-aware and integrate seamlessly with @ttoss/ui.
Accessible accordion component with collapsible content sections. Docs
import { Accordion } from '@ttoss/components/Accordion';
<Accordion
items={[
{
title: 'Section 1',
content: 'Content for section 1',
},
{
title: 'Section 2',
content: 'Content for section 2',
},
]}
/>;
Date range picker with presets and mobile support. Docs
import { DatePicker } from '@ttoss/components/DatePicker';
<DatePicker
label="Select period"
value={dateRange}
onChange={setDateRange}
presets={[
{
label: 'Last 7 days',
getValue: () => ({
from: subDays(new Date(), 7),
to: new Date(),
}),
},
]}
/>;
Slide-out panels from screen edges. Docs
import { Drawer } from '@ttoss/components/Drawer';
<Drawer open={isOpen} direction="right" size="300px">
<div>Drawer content</div>
</Drawer>;
Structured title section with icon, badges, and metadata. Docs
import { EnhancedTitle } from '@ttoss/components/EnhancedTitle';
<EnhancedTitle
icon="fluent:shield-24-filled"
title="Starter Plan"
frontTitle="$49.90/mo"
description="Perfect for small teams"
variant="primary"
topBadges={[
{
label: 'Active',
variant: 'positive',
icon: 'fluent:checkmark-circle-24-filled',
},
]}
bottomBadges={[
{ label: 'OneClick Tracking', icon: 'fluent:checkmark-24-filled' },
]}
/>;
Controlled file uploader with drag-and-drop, previews, and validation. Docs
import { FileUploader } from '@ttoss/components/FileUploader';
<FileUploader
onUpload={async (file, onProgress) => {
const result = await uploadToServer(file);
return { url: result.url, id: result.id, name: result.name };
}}
files={files}
onUploadComplete={(file, result) => setFiles([...files, result])}
onRemove={(file, index) => setFiles(files.filter((_, i) => i !== index))}
accept="image/*,.pdf"
maxSize={10 * 1024 * 1024}
maxFiles={5}
/>;
PWA installation prompt component.
import { InstallPwa } from '@ttoss/components/InstallPwa';
<InstallPwa />;
JSON editor component. Re-exports from json-edit-react. Docs
import { JsonEditor } from '@ttoss/components/JsonEditor';
<JsonEditor data={jsonData} setData={setJsonData} />;
JSON viewer component. Re-exports from react-json-view-lite.
import { JsonView } from '@ttoss/components/JsonView';
<JsonView data={jsonData} />;
Unordered lists with customizable items. Docs
import { List, ListItem } from '@ttoss/components/List';
<List>
<ListItem>First item</ListItem>
<ListItem>Second item</ListItem>
</List>;
Block and display locked features or restricted content within a container. Unlike modals, overlays block only their parent container. Docs
import { LockedOverlay } from '@ttoss/components/LockedOverlay';
<Box sx={{ position: 'relative' }}>
<LockedOverlay
isOpen={isOpen}
onRequestClose={() => setIsOpen(false)}
header={{
icon: 'fluent:lock-closed-24-filled',
title: 'Premium Feature',
description: 'Available in Pro plan only',
variant: 'primary',
}}
actions={[
{
label: 'Upgrade Now',
icon: 'fluent-emoji-high-contrast:sparkles',
variant: 'primary',
onClick: handleUpgrade,
},
]}
>
<Text>This feature is only available for Pro users.</Text>
</LockedOverlay>
</Box>;
Render markdown content with theme integration. Docs
import { Markdown } from '@ttoss/components/Markdown';
<Markdown
components={{
a: ({ children, ...props }) => <Link {...props}>{children}</Link>,
}}
>
# Heading Some **bold** text
</Markdown>;
Dropdown menus with customizable triggers. Docs
import { Menu } from '@ttoss/components/Menu';
<Menu trigger={<Button>Open Menu</Button>}>
<Menu.Item onClick={() => {}}>Action 1</Menu.Item>
<Menu.Item onClick={() => {}}>Action 2</Menu.Item>
</Menu>;
Display metrics with progress visualization, status indicators, and contextual information. Docs
import { MetricCard } from '@ttoss/components/MetricCard';
<MetricCard
metric={{
type: 'number',
value: 8,
max: 10,
label: 'Active Users',
icon: 'mdi:account-group',
}}
/>;
Navigation lists for sidebars, menus, and dropdowns with icons, grouping, and routing integration. Docs
import { NavList } from '@ttoss/components/NavList';
<NavList
items={[
{ id: '1', label: 'Home', href: '/', icon: 'mdi:home' },
{ id: '2', label: 'Profile', href: '/profile', icon: 'mdi:account' },
]}
variant="sidebar"
LinkComponent={NextLink}
/>;
Theme-aware modals with accessibility features. Docs
import { Modal } from '@ttoss/components/Modal';
<Modal
isOpen={isOpen}
onRequestClose={() => setIsOpen(false)}
style={{ content: { backgroundColor: 'secondary' } }}
>
Modal content
</Modal>;
Display notification messages with actions. Docs
import { NotificationCard } from '@ttoss/components/NotificationCard';
<NotificationCard
title="Notification Title"
message="Notification message"
onClose={() => {}}
/>;
Menu component for displaying notifications. Docs
import { NotificationsMenu } from '@ttoss/components/NotificationsMenu';
<NotificationsMenu
notifications={[{ id: '1', title: 'New message', read: false }]}
onNotificationClick={(notification) => {}}
/>;
Debounced search input with loading states. Docs
import { Search } from '@ttoss/components/Search';
<Search
value={searchText}
onChange={setSearchText}
loading={isLoading}
debounce={300}
/>;
Interactive card with spotlight effect, icon, and action buttons. Docs
import { SpotlightCard } from '@ttoss/components/SpotlightCard';
<SpotlightCard
icon="mdi:rocket-launch"
title="Launch Product"
description="Deploy your product to production"
primaryButton={{ label: 'Deploy', onClick: handleDeploy }}
secondaryButton={{ label: 'Preview', onClick: handlePreview }}
/>;
Flexible tables with sorting and pagination. Uses TanStack Table. Docs
import {
Table,
useReactTable,
createColumnHelper,
} from '@ttoss/components/Table';
const table = useReactTable({
data,
columns: [
columnHelper.accessor('name', { header: 'Name' }),
columnHelper.accessor('email', { header: 'Email' }),
],
getCoreRowModel: getCoreRowModel(),
});
<Table>
<Table.Head>
{table.getHeaderGroups().map((headerGroup) => (
<Table.Row key={headerGroup.id}>
{headerGroup.headers.map((header) => (
<Table.Header key={header.id}>
{flexRender(header.column.columnDef.header, header.getContext())}
</Table.Header>
))}
</Table.Row>
))}
</Table.Head>
<Table.Body>
{table.getRowModel().rows.map((row) => (
<Table.Row key={row.id}>
{row.getVisibleCells().map((cell) => (
<Table.Cell key={cell.id}>
{flexRender(cell.column.columnDef.cell, cell.getContext())}
</Table.Cell>
))}
</Table.Row>
))}
</Table.Body>
</Table>;
Tab navigation with content panels. Docs
import { Tabs } from '@ttoss/components/Tabs';
<Tabs>
<Tabs.TabList>
<Tabs.Tab>Tab 1</Tabs.Tab>
<Tabs.Tab>Tab 2</Tabs.Tab>
</Tabs.TabList>
<Tabs.TabContent>
<Tabs.TabPanel>Content 1</Tabs.TabPanel>
<Tabs.TabPanel>Content 2</Tabs.TabPanel>
</Tabs.TabContent>
</Tabs>;
Toast notification system. Docs
import { Toast } from '@ttoss/components/Toast';
<Toast
message="Success message"
type="success"
isOpen={isOpen}
onClose={() => setIsOpen(false)}
/>;
FAQs
React components for ttoss ecosystem.
The npm package @ttoss/components receives a total of 106 weekly downloads. As such, @ttoss/components popularity was classified as not popular.
We found that @ttoss/components demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
/Research
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.

Security News
TeamPCP and BreachForums are promoting a Shai-Hulud supply chain attack contest with a $1,000 prize for the biggest package compromise.

Security News
Packagist urges PHP projects to update Composer after a GitHub token format change exposed some GitHub Actions tokens in CI logs.