Skip to content

Commit

Permalink
Merge pull request #117 from abusix/pla-1032-hailstorm-component-brea…
Browse files Browse the repository at this point in the history
…dcrumb

feat: added Breadcrumb Component
  • Loading branch information
Coderwelsch authored Mar 13, 2024
2 parents 5c193a8 + 378e758 commit 968de79
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import React from "react";
import { ChevronRightIcon } from "../../icons";

export const BreadcrumbNavigationArrow = () => {
return <ChevronRightIcon className="h-3 w-3 text-neutral-800" />;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from "react";
import { classNames } from "../../util/class-names";
import { AsChildProps, Slot } from "../slot/slot";

type BreadcrumbNavigationItemProps = AsChildProps<React.AnchorHTMLAttributes<HTMLAnchorElement>> & {
isActive?: boolean;
};

export const BreadcrumbNavigationItem: React.FC<BreadcrumbNavigationItemProps> = ({
isActive,
asChild,
...props
}) => {
const Comp = asChild ? Slot : "a";

return (
<Comp
className={classNames(
"headline-500 text-neutral-800",
!isActive && "cursor-pointer underline-offset-2 hover:underline",
isActive && "text-black"
)}
{...props}
/>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { Meta, StoryObj } from "@storybook/react";
import React from "react";
import { BreadcrumbNavigation } from "./breadcrumb-navigation";

const meta: Meta<typeof BreadcrumbNavigation> = {
title: "Breadcrumb Navigation",
component: BreadcrumbNavigation,
args: {},
};

export default meta;

type Story = StoryObj<typeof BreadcrumbNavigation>;

export const Base: Story = {
render: () => (
<div className="p-4">
<BreadcrumbNavigation>
<BreadcrumbNavigation.Item href="/">Home</BreadcrumbNavigation.Item>

<BreadcrumbNavigation.Arrow />

<BreadcrumbNavigation.Item href="/">Library</BreadcrumbNavigation.Item>

<BreadcrumbNavigation.Arrow />

<BreadcrumbNavigation.Item asChild isActive>
<a href="/">Book</a>
</BreadcrumbNavigation.Item>
</BreadcrumbNavigation>
</div>
),
};
16 changes: 16 additions & 0 deletions src/components/breadcrumb-navigation/breadcrumb-navigation.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import React from "react";
import { BreadcrumbNavigationItem } from "./breadcrumb-navigation-item";
import { BreadcrumbNavigationArrow } from "./breadcrumb-navigation-arrow";

export interface BreadcrumbNavigationProps {
children: React.ReactNode;
}

const BreadcrumbNavigation = ({ children }: BreadcrumbNavigationProps) => {
return <nav className="flex flex-row items-center gap-1">{children}</nav>;
};

BreadcrumbNavigation.Item = BreadcrumbNavigationItem;
BreadcrumbNavigation.Arrow = BreadcrumbNavigationArrow;

export { BreadcrumbNavigation };
1 change: 1 addition & 0 deletions src/components/breadcrumb-navigation/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { BreadcrumbNavigation } from "./breadcrumb-navigation";
1 change: 1 addition & 0 deletions src/components/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export { Alert, AlertIntent } from "./alert";
export { Avatar } from "./avatar";
export { Badge, BadgeType } from "./badge";
export { BreadcrumbNavigation } from "./breadcrumb-navigation";
export { Button } from "./button";
export { Checkbox } from "./checkbox";
export { Dialog } from "./dialog";
Expand Down

0 comments on commit 968de79

Please sign in to comment.