diff --git a/docs/components/layout/Breadcrumbs.mdx b/docs/components/layout/Breadcrumbs.mdx new file mode 100644 index 00000000..4d904760 --- /dev/null +++ b/docs/components/layout/Breadcrumbs.mdx @@ -0,0 +1,33 @@ +import { Meta, Canvas, ArgTypes } from '@storybook/addon-docs'; +import { Breadcrumbs, BreadcrumbList, BreadcrumbItem, BreadcrumbPage, BreadcrumbLink, BreadcrumbSeparator, breadcrumbsTheme } from '../../../src/layout/Breadcrumbs'; +import * as BreadcrumbsStories from '../../../src/layout/Breadcrumbs/Breadcrumbs.story'; +import ThemeRender from '../../ThemeRender.tsx'; + + + +# Breadcrumbs +Breadcrumbs are a navigation component that shows the user's location within a website or application. + +## Example + + +## Theme +This component uses the following default theme: + + + +Learn more about how to customize in the [Theme documentation](?path=/docs/docs-theme-getting-started--docs). + +## API + +### Breadcrumbs + + +### BreadcrumbList + + +### BreadcrumbLink + + +### BreadcrumbSeparator + diff --git a/src/layout/Breadcrumbs/BreadcrumbItem.tsx b/src/layout/Breadcrumbs/BreadcrumbItem.tsx new file mode 100644 index 00000000..83daab94 --- /dev/null +++ b/src/layout/Breadcrumbs/BreadcrumbItem.tsx @@ -0,0 +1,7 @@ +import React, { FC } from 'react'; +import { cn } from '@/utils'; + +export const BreadcrumbItem: FC> = ({ + className, + ...rest +}) =>
  • ; diff --git a/src/layout/Breadcrumbs/BreadcrumbLink.tsx b/src/layout/Breadcrumbs/BreadcrumbLink.tsx new file mode 100644 index 00000000..c03a53bd --- /dev/null +++ b/src/layout/Breadcrumbs/BreadcrumbLink.tsx @@ -0,0 +1,19 @@ +import React, { FC } from 'react'; +import { cn, useComponentTheme } from '@/utils'; +import { BreadcrumbsTheme } from './BreadcrumbsTheme'; + +export interface BreadcrumbLinkProps + extends React.AnchorHTMLAttributes { + theme?: BreadcrumbsTheme; +} + +export const BreadcrumbLink: FC = ({ + className, + theme: customTheme, + href, + ...rest +}) => { + const theme = useComponentTheme('breadcrumbs', customTheme); + + return ; +}; diff --git a/src/layout/Breadcrumbs/BreadcrumbList.tsx b/src/layout/Breadcrumbs/BreadcrumbList.tsx new file mode 100644 index 00000000..a41cf534 --- /dev/null +++ b/src/layout/Breadcrumbs/BreadcrumbList.tsx @@ -0,0 +1,18 @@ +import React, { FC } from 'react'; +import { cn, useComponentTheme } from '@/utils'; +import { BreadcrumbsTheme } from './BreadcrumbsTheme'; + +export interface BreadcrumbListProps + extends React.OlHTMLAttributes { + theme?: BreadcrumbsTheme; +} + +export const BreadcrumbList: FC = ({ + className, + theme: customTheme, + ...rest +}) => { + const theme = useComponentTheme('breadcrumbs', customTheme); + + return
      ; +}; diff --git a/src/layout/Breadcrumbs/BreadcrumbPage.tsx b/src/layout/Breadcrumbs/BreadcrumbPage.tsx new file mode 100644 index 00000000..8dfeef25 --- /dev/null +++ b/src/layout/Breadcrumbs/BreadcrumbPage.tsx @@ -0,0 +1,26 @@ +import { cn, useComponentTheme } from '@/utils'; +import React, { FC } from 'react'; +import { BreadcrumbsTheme } from './BreadcrumbsTheme'; + +export interface BreadcrumbPageProps + extends React.HTMLAttributes { + theme?: BreadcrumbsTheme; +} + +export const BreadcrumbPage: FC = ({ + theme: customTheme, + className, + ...rest +}) => { + const theme = useComponentTheme('breadcrumbs', customTheme); + + return ( + + ); +}; diff --git a/src/layout/Breadcrumbs/BreadcrumbSeparator.tsx b/src/layout/Breadcrumbs/BreadcrumbSeparator.tsx new file mode 100644 index 00000000..bc36b5a0 --- /dev/null +++ b/src/layout/Breadcrumbs/BreadcrumbSeparator.tsx @@ -0,0 +1,29 @@ +import { Arrow } from '@/elements'; +import { cn, useComponentTheme } from '@/utils'; +import React, { FC } from 'react'; +import { BreadcrumbsTheme } from './BreadcrumbsTheme'; + +export interface BreadcrumbSeparatorProps + extends React.LiHTMLAttributes { + theme?: BreadcrumbsTheme; +} + +export const BreadcrumbSeparator: FC = ({ + children = , + className, + theme: customTheme, + ...rest +}) => { + const theme = useComponentTheme('breadcrumbs', customTheme); + + return ( +
    1. + {children} +
    2. + ); +}; diff --git a/src/layout/Breadcrumbs/Breadcrumbs.story.tsx b/src/layout/Breadcrumbs/Breadcrumbs.story.tsx new file mode 100644 index 00000000..9ca27530 --- /dev/null +++ b/src/layout/Breadcrumbs/Breadcrumbs.story.tsx @@ -0,0 +1,49 @@ +import { + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, + Breadcrumbs +} from './'; + +export default { + title: 'Components/Layout/Breadcrumbs', + component: Breadcrumbs +}; + +export const Basic = () => ( + + + + Home + + + + Docs + + + + Breadcrumbs + + + +); + +export const WithCustomSeparator = () => ( + + + + Home + + / + + Docs + + / + + Breadcrumbs + + + +); diff --git a/src/layout/Breadcrumbs/Breadcrumbs.tsx b/src/layout/Breadcrumbs/Breadcrumbs.tsx new file mode 100644 index 00000000..efb56665 --- /dev/null +++ b/src/layout/Breadcrumbs/Breadcrumbs.tsx @@ -0,0 +1,23 @@ +import { cn, useComponentTheme } from '@/utils'; +import React, { FC } from 'react'; +import { BreadcrumbsTheme } from './BreadcrumbsTheme'; + +export interface BreadcrumbsProps extends React.HTMLAttributes { + theme?: BreadcrumbsTheme; +} + +export const Breadcrumbs: FC = ({ + theme: customTheme, + className, + ...rest +}) => { + const theme = useComponentTheme('breadcrumbs', customTheme); + + return ( +