Skip to content

Commit

Permalink
Merge pull request #128 from abusix/gops-237-add-prop-to-navigation-b…
Browse files Browse the repository at this point in the history
…utton-to-add-tag

feat(components): add tag prop to main disclosure button
  • Loading branch information
mnlfischer authored Jun 19, 2024
2 parents cac465c + 2775873 commit 841683d
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/components/navigation/navigation-disclosure.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
import { Disclosure } from "@headlessui/react";
import React from "react";
import { NavigationDisclosurePanel } from "./navigation-disclosure-panel";
import { NavigationGroupItemTag } from "./navigation-group-item-tag";

export interface NavigationDisclosureButtonProps {
children: React.ReactNode;
LeftIcon?: React.ElementType;
onClick?: () => void;
tag?: string;
}

const NavigationDisclosureButton = ({
children,
LeftIcon,
onClick,
tag,
}: NavigationDisclosureButtonProps) => {
return (
<Disclosure.Button
Expand All @@ -20,6 +23,7 @@ const NavigationDisclosureButton = ({
>
{LeftIcon ? <LeftIcon className="h-4 w-4" /> : null}
{children}
{tag ? <NavigationGroupItemTag>{tag}</NavigationGroupItemTag> : null}
</Disclosure.Button>
);
};
Expand Down
15 changes: 15 additions & 0 deletions src/components/navigation/navigation-group-item-tag.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React from "react";

interface NavigationGroupItemTagProps {
children: React.ReactNode;
}

const NavigationGroupItemTag = ({ children }: NavigationGroupItemTagProps) => {
return (
<div className="ml-auto rounded border border-neutral-0 px-1.5 text-xs font-semibold uppercase text-neutral-0">
{children}
</div>
);
};

export { NavigationGroupItemTag };
4 changes: 4 additions & 0 deletions src/components/navigation/navigation-group.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import React from "react";
import { classNames } from "../../util/class-names";
import { NavigationGroupItemTag } from "./navigation-group-item-tag";

export interface NavigationGroupItemProps extends React.ComponentPropsWithoutRef<"div"> {
isActive?: boolean;
LeftIcon?: React.ElementType;
tag?: string;
}

const NavigationGroupItem = ({
children,
isActive,
LeftIcon,
tag,
...props
}: NavigationGroupItemProps) => {
return (
Expand All @@ -22,6 +25,7 @@ const NavigationGroupItem = ({
>
{LeftIcon ? <LeftIcon className="h-4 w-4" /> : null}
{children}
{tag ? <NavigationGroupItemTag>{tag}</NavigationGroupItemTag> : null}
{isActive && (
<div className="absolute bottom-0 left-0 top-0 h-full w-0.5 rounded-r-sm bg-neutral-0" />
)}
Expand Down
8 changes: 6 additions & 2 deletions src/components/navigation/navigation.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,17 @@ export const Default: Story = {
<nav className="flex flex-1 flex-col">
<Navigation.Group>
<Navigation.Group.Item>Home</Navigation.Group.Item>
<Navigation.Group.Item isActive>Dashboard</Navigation.Group.Item>
<Navigation.Group.Item isActive tag="Beta">
Dashboard
</Navigation.Group.Item>
</Navigation.Group>
<Navigation.Group>
<Navigation.Group.Item>Lookup & Delist</Navigation.Group.Item>
<Navigation.Group.Item>Mail Intelligence</Navigation.Group.Item>
<Navigation.Disclosure>
<Navigation.Disclosure.Button>AbuseHQ</Navigation.Disclosure.Button>
<Navigation.Disclosure.Button tag="Beta">
AbuseHQ 2
</Navigation.Disclosure.Button>
<Navigation.Disclosure.Panel>
<Navigation.Disclosure.Panel.Item>
Cases
Expand Down

0 comments on commit 841683d

Please sign in to comment.