Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
sel-custom-app-bar
Advanced tools
`CustomAppBar` is a highly customizable and reusable React component designed to provide a dynamic application toolbar with integrated tab navigation. The component supports both open and collapsed views, dynamically renders content for each tab, and offe
CustomAppBar
is a highly customizable and reusable React component designed to provide a dynamic application toolbar with integrated tab navigation. The component supports both open and collapsed views, dynamically renders content for each tab, and offers robust state management. It’s perfect for integrating into dashboards, administrative tools, or any application requiring a modern and responsive app bar.
open
and tabSelected
states internally or via parent control.useTabs
.To use CustomAppBar
, install it via npm
:
npm i sel-custom-app-bar
Basic Example (Uncontrolled Mode)
import React from "react";
import CustomAppBar from "custom-app-bar";
import DirectionsBoatFilledIcon from "@mui/icons-material/DirectionsBoatFilled";
import LocalPrintshopIcon from "@mui/icons-material/LocalPrintshop";
import HelpIcon from "@mui/icons-material/Help";
const tabs = [
{ key: "vessel", label: "Vessel", icon: <DirectionsBoatFilledIcon /> },
{ key: "print", label: "Print", icon: <LocalPrintshopIcon /> },
{ key: "help", label: "Help", icon: <HelpIcon /> },
];
const components = {
vessel: <div>Vessel Content</div>,
print: <div>Print Content</div>,
help: <div>Help Content</div>,
};
const App = () => {
return <CustomAppBar tabs={tabs} components={components} />;
};
export default App;
Advanced Example (Controlled Mode)
import React, { useState } from "react";
import CustomAppBar from "custom-app-bar";
import DirectionsBoatFilledIcon from "@mui/icons-material/DirectionsBoatFilled";
import LocalPrintshopIcon from "@mui/icons-material/LocalPrintshop";
import HelpIcon from "@mui/icons-material/Help";
const tabs = [
{ key: "vessel", label: "Vessel", icon: <DirectionsBoatFilledIcon /> },
{ key: "print", label: "Print", icon: <LocalPrintshopIcon /> },
{ key: "help", label: "Help", icon: <HelpIcon /> },
];
const components = {
vessel: <div>Vessel Content</div>,
print: <div>Print Content</div>,
help: <div>Help Content</div>,
};
const App = () => {
const [open, setOpen] = useState(false);
const [tabSelected, setTabSelected] = useState({
vessel: false,
print: false,
help: false,
});
const handleTabChange = (key: string) => {
console.log(`Tab changed to: ${key}`);
};
return (
<CustomAppBar
tabs={tabs}
components={components}
open={open}
tabSelected={tabSelected}
setOpen={setOpen}
setTabSelected={setTabSelected}
onTabChange={handleTabChange}
initialOpen={false}
tabSelectedColor="primary"
/>
);
};
export default App;
Prop | Type | Description |
---|---|---|
tabs | TabsType[] | Array of tabs with key, label, and optional icon. |
components | Record<string, ReactNode> | Mapping of tab keys to their respective content. |
Prop | Type | Description |
---|---|---|
open | boolean | Controls whether the drawer is open (controlled mode). |
tabSelected | TabState | Tracks the currently selected tab (controlled mode). |
setOpen | Dispatch<SetStateAction<boolean>> | Setter for controlling the open state. |
setTabSelected | Dispatch<SetStateAction<TabState>> | Setter for controlling the tabSelected state. |
initialOpen | boolean | Initial state for whether the drawer is open (uncontrolled mode). |
tabSelectedColor | string | Customizes the color of the selected tab. Default is primary . |
onTabChange | (key: string) => void | Callback function triggered when a tab changes. |
The useTabs hook provides state management for the app bar. Use it to manage the open and tabSelected states dynamically.
import { useTabs } from "custom-app-bar";
const { open, tabSelected, toggleTab } = useTabs({
tabs,
initialOpen: false,
onTabChange: (key) => console.log(`Tab changed to: ${key}`),
});
Rendering Tabs Dynamically
const tabs = [
{ key: "home", label: "Home", icon: <HomeIcon /> },
{ key: "settings", label: "Settings", icon: <SettingsIcon /> },
{ key: "profile", label: "Profile", icon: <AccountCircleIcon /> },
];
const components = {
home: <HomePage />,
settings: <SettingsPage />,
profile: <ProfilePage />,
};
<CustomAppBar tabs={tabs} components={components} />;
To set up a development environment:
npm install
To build the package for distribution:
npm run build
This software is from The University of Texas at El Paso, Systems Ecology Lab. All Rights Reserved.
FAQs
`CustomAppBar` is a highly customizable and reusable React component designed to provide a dynamic application toolbar with integrated tab navigation. The component supports both open and collapsed views, dynamically renders content for each tab, and offe
The npm package sel-custom-app-bar receives a total of 364 weekly downloads. As such, sel-custom-app-bar popularity was classified as not popular.
We found that sel-custom-app-bar demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.