From 121d2818a787aab7e6110ef74cd0d8f4b24935bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C4=8Curda?= Date: Mon, 2 Dec 2024 14:21:32 +0100 Subject: [PATCH] Feat(web-react): Introduce Navigation #DS-1524 --- .../src/components/Navigation/Navigation.tsx | 22 +++ .../components/Navigation/NavigationItem.tsx | 19 +++ .../components/Navigation/NavigationLink.tsx | 43 ++++++ .../src/components/Navigation/README.md | 134 ++++++++++++++++++ .../Navigation/__tests__/Navigation.test.tsx | 35 +++++ .../__tests__/NavigationItem.test.tsx | 24 ++++ .../__tests__/NavigationLink.test.tsx | 49 +++++++ .../__tests__/useNavigationLinkProps.test.ts | 97 +++++++++++++ .../useNavigationLinkStyleProps.test.ts | 26 ++++ .../__tests__/useNavigationStyleProps.test.ts | 10 ++ .../Navigation/demo/NavigationButtons.tsx | 20 +++ .../Navigation/demo/NavigationDefault.tsx | 12 ++ .../Navigation/demo/NavigationLink.tsx | 25 ++++ .../src/components/Navigation/demo/index.tsx | 20 +++ .../src/components/Navigation/index.html | 1 + .../src/components/Navigation/index.ts | 8 ++ .../Navigation/stories/Navigation.stories.tsx | 43 ++++++ .../stories/NavigationItem.stories.tsx | 31 ++++ .../stories/NavigationLink.stories.tsx | 41 ++++++ .../Navigation/useNavigationLinkProps.ts | 21 +++ .../Navigation/useNavigationLinkStyleProps.ts | 31 ++++ .../Navigation/useNavigationStyleProps.ts | 13 ++ .../src/components/UNSTABLE_Header/README.md | 9 +- .../useUnstableHeaderStyleProps.ts | 2 +- packages/web-react/src/components/index.ts | 2 + packages/web-react/src/types/index.ts | 1 + packages/web-react/src/types/navigation.ts | 42 ++++++ .../web-react/src/types/unstableHeader.ts | 4 +- .../web-react-chromium-linux.png | Bin 96526 -> 100619 bytes 29 files changed, 776 insertions(+), 9 deletions(-) create mode 100644 packages/web-react/src/components/Navigation/Navigation.tsx create mode 100644 packages/web-react/src/components/Navigation/NavigationItem.tsx create mode 100644 packages/web-react/src/components/Navigation/NavigationLink.tsx create mode 100644 packages/web-react/src/components/Navigation/README.md create mode 100644 packages/web-react/src/components/Navigation/__tests__/Navigation.test.tsx create mode 100644 packages/web-react/src/components/Navigation/__tests__/NavigationItem.test.tsx create mode 100644 packages/web-react/src/components/Navigation/__tests__/NavigationLink.test.tsx create mode 100644 packages/web-react/src/components/Navigation/__tests__/useNavigationLinkProps.test.ts create mode 100644 packages/web-react/src/components/Navigation/__tests__/useNavigationLinkStyleProps.test.ts create mode 100644 packages/web-react/src/components/Navigation/__tests__/useNavigationStyleProps.test.ts create mode 100644 packages/web-react/src/components/Navigation/demo/NavigationButtons.tsx create mode 100644 packages/web-react/src/components/Navigation/demo/NavigationDefault.tsx create mode 100644 packages/web-react/src/components/Navigation/demo/NavigationLink.tsx create mode 100644 packages/web-react/src/components/Navigation/demo/index.tsx create mode 100644 packages/web-react/src/components/Navigation/index.html create mode 100644 packages/web-react/src/components/Navigation/index.ts create mode 100644 packages/web-react/src/components/Navigation/stories/Navigation.stories.tsx create mode 100644 packages/web-react/src/components/Navigation/stories/NavigationItem.stories.tsx create mode 100644 packages/web-react/src/components/Navigation/stories/NavigationLink.stories.tsx create mode 100644 packages/web-react/src/components/Navigation/useNavigationLinkProps.ts create mode 100644 packages/web-react/src/components/Navigation/useNavigationLinkStyleProps.ts create mode 100644 packages/web-react/src/components/Navigation/useNavigationStyleProps.ts create mode 100644 packages/web-react/src/types/navigation.ts diff --git a/packages/web-react/src/components/Navigation/Navigation.tsx b/packages/web-react/src/components/Navigation/Navigation.tsx new file mode 100644 index 0000000000..b27049daec --- /dev/null +++ b/packages/web-react/src/components/Navigation/Navigation.tsx @@ -0,0 +1,22 @@ +'use client'; + +import classNames from 'classnames'; +import React from 'react'; +import { useStyleProps } from '../../hooks'; +import { SpiritNavigationProps } from '../../types'; +import { useNavigationStyleProps } from './useNavigationStyleProps'; + +const Navigation = (props: SpiritNavigationProps): JSX.Element => { + const { children, ...restProps } = props; + + const { classProps } = useNavigationStyleProps(); + const { styleProps, props: otherProps } = useStyleProps(restProps); + + return ( + + ); +}; + +export default Navigation; diff --git a/packages/web-react/src/components/Navigation/NavigationItem.tsx b/packages/web-react/src/components/Navigation/NavigationItem.tsx new file mode 100644 index 0000000000..bb32fff3ca --- /dev/null +++ b/packages/web-react/src/components/Navigation/NavigationItem.tsx @@ -0,0 +1,19 @@ +'use client'; + +import React from 'react'; +import { useStyleProps } from '../../hooks'; +import { SpiritNavigationItemProps } from '../../types'; + +const NavigationItem = (props: SpiritNavigationItemProps): JSX.Element => { + const { children, ...restProps } = props; + + const { styleProps, props: otherProps } = useStyleProps(restProps); + + return ( +
  • + {children} +
  • + ); +}; + +export default NavigationItem; diff --git a/packages/web-react/src/components/Navigation/NavigationLink.tsx b/packages/web-react/src/components/Navigation/NavigationLink.tsx new file mode 100644 index 0000000000..c47c532ac5 --- /dev/null +++ b/packages/web-react/src/components/Navigation/NavigationLink.tsx @@ -0,0 +1,43 @@ +'use client'; + +import classNames from 'classnames'; +import React, { ElementType, forwardRef } from 'react'; +import { useStyleProps } from '../../hooks'; +import { PolymorphicRef, SpiritNavigationLinkProps } from '../../types'; +import { useNavigationLinkProps } from './useNavigationLinkProps'; +import { useNavigationLinkStyleProps } from './useNavigationLinkStyleProps'; + +const defaultProps: Partial = { + elementType: 'a', +}; + +/* We need an exception for components exported with forwardRef */ +/* eslint no-underscore-dangle: ['error', { allow: ['_NavigationLink'] }] */ +const _NavigationLink = ( + props: SpiritNavigationLinkProps, + ref: PolymorphicRef, +): JSX.Element => { + const propsWithDefaults = { ...defaultProps, ...props }; + const { elementType = defaultProps.elementType as ElementType, children, ...restProps } = propsWithDefaults; + const ElementTag = propsWithDefaults.isDisabled ? 'span' : elementType; + + const { navigationLinkProps } = useNavigationLinkProps(propsWithDefaults); + const { classProps, props: modifiedProps } = useNavigationLinkStyleProps(restProps); + const { styleProps, props: otherProps } = useStyleProps(modifiedProps); + + return ( + + {children} + + ); +}; + +const NavigationLink = forwardRef>(_NavigationLink); + +export default NavigationLink; diff --git a/packages/web-react/src/components/Navigation/README.md b/packages/web-react/src/components/Navigation/README.md new file mode 100644 index 0000000000..4dd8ce4653 --- /dev/null +++ b/packages/web-react/src/components/Navigation/README.md @@ -0,0 +1,134 @@ +# Navigation + +The `Navigation` component is a container for the navigation links of the application. + +It consists of a these parts: + +- [Navigation](#navigation) +- [NavigationItem](#navigation-item) +- [NavigationLink](#navigation-link) + +## Navigation + +The `Navigation` is a `nav` wrapper for navigation items. + +```jsx +import { Navigation } from '@lmc-eu/spirit-web-react'; + +{/* Navigation items go here */}; +``` + +It centres its children vertically, and if the children do not include `NavigationLink` components, +it will apply a gap between them. + +ℹ️ Don't forget to add the `aria-label` attribute to the `Navigation` component for correct accessible state. + +### API + +| Name | Type | Default | Required | Description | +| ---------- | --------------------------------------------------------------------------------------- | ------- | -------- | ------------------------- | +| `children` | `ReactElement` \| `ReactElement` \| Array of these types | `null` | ✓ | Content of the Navigation | + +The components accept [additional attributes][readme-additional-attributes]. +If you need more control over the styling of a component, you can use [style props][readme-style-props] +and [escape hatches][readme-escape-hatches]. + +## Navigation Item + +The `NavigationItem` is a container for navigation links. + +```jsx +import { NavigationItem } from '@lmc-eu/spirit-web-react'; + +{/* Navigation links go here */}; +``` + +### API + +| Name | Type | Default | Required | Description | +| ---------- | ----------------------- | ------- | -------- | ----------------------------- | +| `children` | `string` \| `ReactNode` | `null` | ✓ | Content of the NavigationItem | + +The components accept [additional attributes][readme-additional-attributes]. +If you need more control over the styling of a component, you can use [style props][readme-style-props] +and [escape hatches][readme-escape-hatches]. + +## Navigation Link + +The `NavigationLink` is component that is styled to be used as a navigation link. + +```jsx +import { NavigationLink } from '@lmc-eu/spirit-web-react'; + +Link; +``` + +It can obtain `isSelected` or `isDisabled` states by adding the respective props. + +```jsx +Selected Link +Disabled Link +``` + +ℹ️ Don't forget to add the `aria-current="page"` attribute for correct accessible state if selected. + +ℹ️ Please note that in the `isDisabled` state the `NavigationLink` will be an `span` tag. + +If the `NavigationLink` is inside a [`UNSTABLE_Header`][web-react-unstable-header] component, it will +inherit the height of the `Header`. + +### API + +| Name | Type | Default | Required | Description | +| ------------- | --------------------------------- | ------- | -------- | ----------------------------- | +| `children` | `string` \| `ReactNode` | `null` | ✓ | Content of the NavigationLink | +| `elementType` | `ElementType` | `a` | ✕ | Type of element used as | +| `href` | `string` | - | ✕ | URL of the link | +| `isDisabled` | `boolean` | `false` | ✕ | Whether the link is disabled | +| `isSelected` | `boolean` | `false` | ✕ | Whether the link is selected | +| `ref` | `ForwardedRef` | — | ✕ | Anchor element reference | +| `target` | `string` | `null` | ✕ | Link target | + +The components accept [additional attributes][readme-additional-attributes]. +If you need more control over the styling of a component, you can use [style props][readme-style-props] +and [escape hatches][readme-escape-hatches]. + +### Full Example + +With NavigationLink components: + +```jsx + + + + Selected Link + + + + + Disabled Link + + + + Link + + +``` + +With Buttons: + +```jsx + + + Button + + + Button + + +``` + +[readme-additional-attributes]: https://github.com/lmc-eu/spirit-design-system/blob/main/packages/web-react/README.md#additional-attributes +[readme-escape-hatches]: https://github.com/lmc-eu/spirit-design-system/blob/main/packages/web-react/README.md#escape-hatches +[readme-style-props]: https://github.com/lmc-eu/spirit-design-system/blob/main/packages/web-react/README.md#style-props +[web-react-unstable-header]: https://github.com/lmc-eu/spirit-design-system/blob/main/packages/web-react/src/components/UNSTABLE_Header/README.md diff --git a/packages/web-react/src/components/Navigation/__tests__/Navigation.test.tsx b/packages/web-react/src/components/Navigation/__tests__/Navigation.test.tsx new file mode 100644 index 0000000000..621ac52c91 --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/Navigation.test.tsx @@ -0,0 +1,35 @@ +import '@testing-library/jest-dom'; +import { render, screen } from '@testing-library/react'; +import React from 'react'; +import { classNamePrefixProviderTest } from '../../../../tests/providerTests/classNamePrefixProviderTest'; +import { restPropsTest } from '../../../../tests/providerTests/restPropsTest'; +import { stylePropsTest } from '../../../../tests/providerTests/stylePropsTest'; +import Navigation from '../Navigation'; + +describe('Navigation', () => { + classNamePrefixProviderTest(Navigation, 'Navigation'); + + stylePropsTest(Navigation); + + restPropsTest(Navigation, 'nav'); + + beforeEach(() => { + render( + +
  • Content
  • +
    , + ); + }); + + it('should have default classname', () => { + expect(screen.getByRole('navigation')).toHaveClass('Navigation'); + }); + + it('should render list and children', () => { + expect(screen.getByRole('list')).toBeInTheDocument(); + }); + + it('should render children', () => { + expect(screen.getByText('Content')).toBeInTheDocument(); + }); +}); diff --git a/packages/web-react/src/components/Navigation/__tests__/NavigationItem.test.tsx b/packages/web-react/src/components/Navigation/__tests__/NavigationItem.test.tsx new file mode 100644 index 0000000000..2037bdb321 --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/NavigationItem.test.tsx @@ -0,0 +1,24 @@ +import '@testing-library/jest-dom'; +import { render, screen } from '@testing-library/react'; +import React from 'react'; +import { restPropsTest } from '../../../../tests/providerTests/restPropsTest'; +import { stylePropsTest } from '../../../../tests/providerTests/stylePropsTest'; +import NavigationItem from '../NavigationItem'; + +describe('NavigationItem', () => { + stylePropsTest(NavigationItem); + + restPropsTest(NavigationItem, 'li'); + + it('should have correct role', () => { + render(Content); + + expect(screen.getByRole('listitem')).toBeInTheDocument(); + }); + + it('should render children', () => { + render(Content); + + expect(screen.getByRole('listitem')).toHaveTextContent('Content'); + }); +}); diff --git a/packages/web-react/src/components/Navigation/__tests__/NavigationLink.test.tsx b/packages/web-react/src/components/Navigation/__tests__/NavigationLink.test.tsx new file mode 100644 index 0000000000..6e9a2d5b1f --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/NavigationLink.test.tsx @@ -0,0 +1,49 @@ +import '@testing-library/jest-dom'; +import { render, screen } from '@testing-library/react'; +import React from 'react'; +import { classNamePrefixProviderTest } from '../../../../tests/providerTests/classNamePrefixProviderTest'; +import { restPropsTest } from '../../../../tests/providerTests/restPropsTest'; +import { stylePropsTest } from '../../../../tests/providerTests/stylePropsTest'; +import NavigationLink from '../NavigationLink'; + +describe('NavigationLink', () => { + classNamePrefixProviderTest(NavigationLink, 'NavigationLink'); + + stylePropsTest(NavigationLink); + + restPropsTest(NavigationLink, 'a'); + + it('should have default classname', () => { + render(Content); + + expect(screen.getByRole('link')).toHaveClass('NavigationLink'); + }); + + it('should have selected classname', () => { + render( + + Content + , + ); + + expect(screen.getByRole('link')).toHaveClass('NavigationLink NavigationLink--selected'); + }); + + it('should have disabled classname and correct elementType', () => { + render( + + Content + , + ); + + expect(screen.getByText('Content')).toHaveClass('NavigationLink NavigationLink--disabled'); + expect(screen.getByText('Content')).toContainHTML('span'); + expect(screen.queryByRole('link')).not.toBeInTheDocument(); + }); + + it('should render children', () => { + render(Content); + + expect(screen.getByText('Content')).toBeInTheDocument(); + }); +}); diff --git a/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkProps.test.ts b/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkProps.test.ts new file mode 100644 index 0000000000..2a56d6456c --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkProps.test.ts @@ -0,0 +1,97 @@ +import { renderHook } from '@testing-library/react'; +import { SpiritNavigationLinkProps } from '../../../types'; +import { useNavigationLinkProps } from '../useNavigationLinkProps'; + +describe('useNavigationLinkProps', () => { + it('should return defaults props', () => { + const props: SpiritNavigationLinkProps = { + href: '/', + target: '_blank', + isSelected: false, + isDisabled: false, + }; + const { result } = renderHook(() => useNavigationLinkProps(props)); + + expect(result.current).toStrictEqual({ + navigationLinkProps: { + href: '/', + rel: undefined, + target: '_blank', + }, + }); + }); + + it('should return defaults if element is different from anchor', () => { + const props: SpiritNavigationLinkProps<'span'> = { + elementType: 'span', + href: '/', + target: '_blank', + isSelected: false, + isDisabled: false, + }; + const { result } = renderHook(() => useNavigationLinkProps(props as SpiritNavigationLinkProps)); + + expect(result.current).toStrictEqual({ + navigationLinkProps: { + href: undefined, + rel: undefined, + target: undefined, + }, + }); + }); + + it('should return for isDisabled', () => { + const props: SpiritNavigationLinkProps = { + href: '/', + target: '_blank', + isSelected: false, + isDisabled: true, + }; + const { result } = renderHook(() => useNavigationLinkProps(props)); + + expect(result.current).toStrictEqual({ + navigationLinkProps: { + href: undefined, + rel: undefined, + target: undefined, + }, + }); + }); + + it('should return for isSelected', () => { + const props: SpiritNavigationLinkProps = { + href: '/', + target: '_blank', + isSelected: true, + isDisabled: false, + }; + const { result } = renderHook(() => useNavigationLinkProps(props)); + + expect(result.current).toStrictEqual({ + navigationLinkProps: { + href: '/', + rel: undefined, + target: '_blank', + }, + }); + }); + + it('should return for elementType', () => { + const props: SpiritNavigationLinkProps<'div'> = { + elementType: 'div', + href: '/', + target: '_blank', + isSelected: false, + isDisabled: false, + }; + const { result } = renderHook(() => useNavigationLinkProps(props as SpiritNavigationLinkProps)); + + expect(result.current).toStrictEqual({ + navigationLinkProps: { + href: undefined, + rel: undefined, + target: undefined, + }, + }); + }); +}); diff --git a/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkStyleProps.test.ts b/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkStyleProps.test.ts new file mode 100644 index 0000000000..d7681c4400 --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/useNavigationLinkStyleProps.test.ts @@ -0,0 +1,26 @@ +import { renderHook } from '@testing-library/react'; +import { SpiritNavigationLinkProps } from '../../../types'; +import { useNavigationLinkStyleProps } from '../useNavigationLinkStyleProps'; + +describe('useNavigationLinkStyleProps', () => { + it('should return defaults', () => { + const props = {}; + const { result } = renderHook(() => useNavigationLinkStyleProps(props)); + + expect(result.current.classProps).toBe('NavigationLink'); + }); + + it('should return disabled class', () => { + const props: SpiritNavigationLinkProps = { isDisabled: true }; + const { result } = renderHook(() => useNavigationLinkStyleProps(props)); + + expect(result.current.classProps).toBe('NavigationLink NavigationLink--disabled'); + }); + + it('should return selected class', () => { + const props = { isSelected: true }; + const { result } = renderHook(() => useNavigationLinkStyleProps(props)); + + expect(result.current.classProps).toBe('NavigationLink NavigationLink--selected'); + }); +}); diff --git a/packages/web-react/src/components/Navigation/__tests__/useNavigationStyleProps.test.ts b/packages/web-react/src/components/Navigation/__tests__/useNavigationStyleProps.test.ts new file mode 100644 index 0000000000..a1efc2675e --- /dev/null +++ b/packages/web-react/src/components/Navigation/__tests__/useNavigationStyleProps.test.ts @@ -0,0 +1,10 @@ +import { renderHook } from '@testing-library/react'; +import { useNavigationStyleProps } from '../useNavigationStyleProps'; + +describe('useNavigationStyleProps', () => { + it('should return defaults', () => { + const { result } = renderHook(() => useNavigationStyleProps()); + + expect(result.current.classProps).toBe('Navigation'); + }); +}); diff --git a/packages/web-react/src/components/Navigation/demo/NavigationButtons.tsx b/packages/web-react/src/components/Navigation/demo/NavigationButtons.tsx new file mode 100644 index 0000000000..cb0cb2f749 --- /dev/null +++ b/packages/web-react/src/components/Navigation/demo/NavigationButtons.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { ButtonLink } from '../../ButtonLink'; +import Navigation from '../Navigation'; +import NavigationItem from '../NavigationItem'; + +const NavigationDefault = () => { + return ( + + + Button + + + + Button + + + + ); +}; +export default NavigationDefault; diff --git a/packages/web-react/src/components/Navigation/demo/NavigationDefault.tsx b/packages/web-react/src/components/Navigation/demo/NavigationDefault.tsx new file mode 100644 index 0000000000..9792166066 --- /dev/null +++ b/packages/web-react/src/components/Navigation/demo/NavigationDefault.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import Navigation from '../Navigation'; +import NavigationItem from '../NavigationItem'; + +const NavigationDefault = () => { + return ( + + Item + + ); +}; +export default NavigationDefault; diff --git a/packages/web-react/src/components/Navigation/demo/NavigationLink.tsx b/packages/web-react/src/components/Navigation/demo/NavigationLink.tsx new file mode 100644 index 0000000000..7ecc70c589 --- /dev/null +++ b/packages/web-react/src/components/Navigation/demo/NavigationLink.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import Navigation from '../Navigation'; +import NavigationItem from '../NavigationItem'; +import NavigationLink from '../NavigationLink'; + +const NavigationDefault = () => { + return ( + + + Link + + + + Selected + + + + + Disabled + + + + ); +}; +export default NavigationDefault; diff --git a/packages/web-react/src/components/Navigation/demo/index.tsx b/packages/web-react/src/components/Navigation/demo/index.tsx new file mode 100644 index 0000000000..01462fe662 --- /dev/null +++ b/packages/web-react/src/components/Navigation/demo/index.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import DocsSection from '../../../../docs/DocsSections'; +import NavigationButtons from './NavigationButtons'; +import NavigationDefault from './NavigationDefault'; +import NavigationLink from './NavigationLink'; + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + + + + + + + + + , +); diff --git a/packages/web-react/src/components/Navigation/index.html b/packages/web-react/src/components/Navigation/index.html new file mode 100644 index 0000000000..59b5d4e1c8 --- /dev/null +++ b/packages/web-react/src/components/Navigation/index.html @@ -0,0 +1 @@ +{{> web-react/demo title="Navigation" parentPageName="Components" }} diff --git a/packages/web-react/src/components/Navigation/index.ts b/packages/web-react/src/components/Navigation/index.ts new file mode 100644 index 0000000000..8cf2651bce --- /dev/null +++ b/packages/web-react/src/components/Navigation/index.ts @@ -0,0 +1,8 @@ +'use client'; + +export { default as Navigation } from './Navigation'; +export { default as NavigationItem } from './NavigationItem'; +export { default as NavigationLink } from './NavigationLink'; +export * from './useNavigationStyleProps'; +export * from './useNavigationLinkProps'; +export * from './useNavigationLinkStyleProps'; diff --git a/packages/web-react/src/components/Navigation/stories/Navigation.stories.tsx b/packages/web-react/src/components/Navigation/stories/Navigation.stories.tsx new file mode 100644 index 0000000000..123f16c34a --- /dev/null +++ b/packages/web-react/src/components/Navigation/stories/Navigation.stories.tsx @@ -0,0 +1,43 @@ +import { Markdown } from '@storybook/blocks'; +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import Navigation from '../Navigation'; +import NavigationItem from '../NavigationItem'; +import NavigationLink from '../NavigationLink'; +import ReadMe from '../README.md'; + +const meta: Meta = { + title: 'Components/Navigation', + component: Navigation, + parameters: { + docs: { + page: () => {ReadMe}, + }, + }, + argTypes: { + children: { + control: 'object', + }, + }, + args: { + children: ( + <> + + + Home + + + + Not Home + + + ), + }, +}; + +export default meta; +type Story = StoryObj; + +export const Playground: Story = { + name: 'Navigation', +}; diff --git a/packages/web-react/src/components/Navigation/stories/NavigationItem.stories.tsx b/packages/web-react/src/components/Navigation/stories/NavigationItem.stories.tsx new file mode 100644 index 0000000000..60ec676e0a --- /dev/null +++ b/packages/web-react/src/components/Navigation/stories/NavigationItem.stories.tsx @@ -0,0 +1,31 @@ +import { Markdown } from '@storybook/blocks'; +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import NavigationItem from '../NavigationItem'; +import NavigationLink from '../NavigationLink'; +import ReadMe from '../README.md'; + +const meta: Meta = { + title: 'Components/Navigation', + component: NavigationItem, + parameters: { + docs: { + page: () => {ReadMe}, + }, + }, + args: { + children: Link, + }, +}; + +export default meta; +type Story = StoryObj; + +export const NavigationItemPlayground: Story = { + name: 'NavigationItem', + render: (args) => ( +
      + +
    + ), +}; diff --git a/packages/web-react/src/components/Navigation/stories/NavigationLink.stories.tsx b/packages/web-react/src/components/Navigation/stories/NavigationLink.stories.tsx new file mode 100644 index 0000000000..5c531ee0da --- /dev/null +++ b/packages/web-react/src/components/Navigation/stories/NavigationLink.stories.tsx @@ -0,0 +1,41 @@ +import { Markdown } from '@storybook/blocks'; +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import NavigationLink from '../NavigationLink'; +import ReadMe from '../README.md'; + +const meta: Meta = { + title: 'Components/Navigation', + component: NavigationLink, + parameters: { + docs: { + page: () => {ReadMe}, + }, + }, + argTypes: { + isDisabled: { + control: 'boolean', + table: { + defaultValue: { summary: 'false' }, + }, + }, + isSelected: { + control: 'boolean', + table: { + defaultValue: { summary: 'false' }, + }, + }, + }, + args: { + children: 'Link', + isDisabled: false, + isSelected: false, + }, +}; + +export default meta; +type Story = StoryObj; + +export const NavigationLinkPlayground: Story = { + name: 'NavigationLink', +}; diff --git a/packages/web-react/src/components/Navigation/useNavigationLinkProps.ts b/packages/web-react/src/components/Navigation/useNavigationLinkProps.ts new file mode 100644 index 0000000000..30a8ea89dd --- /dev/null +++ b/packages/web-react/src/components/Navigation/useNavigationLinkProps.ts @@ -0,0 +1,21 @@ +import { SpiritNavigationLinkProps } from '../../types'; + +export type UseNavigationLinkProps = Partial; + +export type UseNavigationLinkReturn = { + navigationLinkProps: UseNavigationLinkProps; +}; + +export const useNavigationLinkProps = (props: UseNavigationLinkProps): UseNavigationLinkReturn => { + const { elementType = 'a', isDisabled, href, target, rel } = props; + + const navigationLinkProps: Partial = { + href: elementType === 'a' && !isDisabled ? href : undefined, + target: elementType === 'a' && !isDisabled ? target : undefined, + rel: elementType === 'a' ? rel : undefined, + }; + + return { + navigationLinkProps, + }; +}; diff --git a/packages/web-react/src/components/Navigation/useNavigationLinkStyleProps.ts b/packages/web-react/src/components/Navigation/useNavigationLinkStyleProps.ts new file mode 100644 index 0000000000..bdd2cca267 --- /dev/null +++ b/packages/web-react/src/components/Navigation/useNavigationLinkStyleProps.ts @@ -0,0 +1,31 @@ +import classNames from 'classnames'; +import { ElementType } from 'react'; +import { useClassNamePrefix } from '../../hooks'; +import { LinkProps, SpiritNavigationLinkProps } from '../../types'; + +export interface NavigationLinkStyles { + /** className props */ + classProps: string | null; + /** props to be passed to the input element */ + props: Partial>; +} + +export function useNavigationLinkStyleProps( + props: SpiritNavigationLinkProps, +): NavigationLinkStyles { + const { isDisabled, isSelected, ...restProps } = props; + + const navigationLinkClass = useClassNamePrefix('NavigationLink'); + const navigationLinkDisabledClass = `${navigationLinkClass}--disabled`; + const navigationLinkSelectedClass = `${navigationLinkClass}--selected`; + + const className = classNames(navigationLinkClass, { + [navigationLinkDisabledClass]: isDisabled, + [navigationLinkSelectedClass]: isSelected, + }); + + return { + classProps: className, + props: restProps, + }; +} diff --git a/packages/web-react/src/components/Navigation/useNavigationStyleProps.ts b/packages/web-react/src/components/Navigation/useNavigationStyleProps.ts new file mode 100644 index 0000000000..608f5492f7 --- /dev/null +++ b/packages/web-react/src/components/Navigation/useNavigationStyleProps.ts @@ -0,0 +1,13 @@ +import { useClassNamePrefix } from '../../hooks'; + +export interface NavigationStyles { + classProps: string; +} + +export const useNavigationStyleProps = () => { + const navigationClass = useClassNamePrefix('Navigation'); + + return { + classProps: navigationClass, + }; +}; diff --git a/packages/web-react/src/components/UNSTABLE_Header/README.md b/packages/web-react/src/components/UNSTABLE_Header/README.md index 2a37500ab9..b4dc55c6e4 100644 --- a/packages/web-react/src/components/UNSTABLE_Header/README.md +++ b/packages/web-react/src/components/UNSTABLE_Header/README.md @@ -20,7 +20,7 @@ import { UNSTABLE_Header } from '@lmc-eu/spirit-web-react'; {/* Content go here */}; ``` -It also sets CSS variable for the Header height which can be used in other nested components. +It also sets CSS variable for the Header height which can be used by nested components. ### API @@ -36,9 +36,6 @@ and [escape hatches][readme-escape-hatches]. The `UNSTABLE_HeaderLogo` component is a container for the logo. -Without any modifier, Header is ready to contain necessary blocks in a classic -left-to-right layout (in LTR documents). - ```jsx import { UNSTABLE_HeaderLogo } from '@lmc-eu/spirit-web-react'; @@ -80,7 +77,7 @@ Use [`Container`][web-react-container] and [`Flex`][web-react-flex] components t ``` -This way you can modify the layout of the Header content easily and modify it how you need. +This way you can easily modify the layout of the Header content. For example you can make the content centered by setting the `Flex` alignment properties to center. @@ -94,7 +91,7 @@ For example you can make the content centered by setting the `Flex` alignment pr ``` -Or you can make modify gaps between the content by setting the `Flex` spacing property. +Or you can modify the gaps between the content by setting the `Flex` `spacing` property. ```jsx diff --git a/packages/web-react/src/components/UNSTABLE_Header/useUnstableHeaderStyleProps.ts b/packages/web-react/src/components/UNSTABLE_Header/useUnstableHeaderStyleProps.ts index 247d7b4608..ec38f218e7 100644 --- a/packages/web-react/src/components/UNSTABLE_Header/useUnstableHeaderStyleProps.ts +++ b/packages/web-react/src/components/UNSTABLE_Header/useUnstableHeaderStyleProps.ts @@ -1,5 +1,5 @@ import { useClassNamePrefix } from '../../hooks'; -import { SpiritHeaderProps } from './UNSTABLE_Header'; +import { SpiritHeaderProps } from '../../types'; export interface HeaderStyles { classProps: { diff --git a/packages/web-react/src/components/index.ts b/packages/web-react/src/components/index.ts index c9d80396ac..95189c68a4 100644 --- a/packages/web-react/src/components/index.ts +++ b/packages/web-react/src/components/index.ts @@ -23,6 +23,7 @@ export * from './Icon'; export * from './Item'; export * from './Link'; export * from './Modal'; +export * from './Navigation'; export * from './NoSsr'; export * from './Pagination'; export * from './PartnerLogo'; @@ -43,6 +44,7 @@ export * from './Toast'; export * from './Tooltip'; export * from './UNSTABLE_ActionLayout'; export * from './UNSTABLE_Avatar'; +export * from './UNSTABLE_Header'; export * from './UNSTABLE_EmptyState'; export * from './UNSTABLE_Slider'; export * from './UNSTABLE_Toggle'; diff --git a/packages/web-react/src/types/index.ts b/packages/web-react/src/types/index.ts index dbcac2de97..31a206da2e 100644 --- a/packages/web-react/src/types/index.ts +++ b/packages/web-react/src/types/index.ts @@ -21,6 +21,7 @@ export * from './item'; export * from './label'; export * from './link'; export * from './modal'; +export * from './navigation'; export * from './pagination'; export * from './pill'; export * from './radio'; diff --git a/packages/web-react/src/types/navigation.ts b/packages/web-react/src/types/navigation.ts new file mode 100644 index 0000000000..2c3f9c490e --- /dev/null +++ b/packages/web-react/src/types/navigation.ts @@ -0,0 +1,42 @@ +import { ElementType, ReactElement } from 'react'; +import { NavigationItem } from '../components'; +import { LinkTarget } from './link'; +import { + AriaLabelingProps, + ChildrenProps, + SpiritPolymorphicElementPropsWithRef, + StyleProps, + TransferProps, +} from './shared'; + +export interface NavigationLinkBaseProps extends ChildrenProps, StyleProps, AriaLabelingProps, TransferProps { + /** NavigationLink's href attribute */ + href?: string; + /** Whether is the NavigationLink disabled */ + isDisabled?: boolean; + /** Whether is the NavigationLink selected */ + isSelected?: boolean; + /** NavigationLink's target attribute */ + target?: LinkTarget; +} + +export type NavigationLinkProps = { + /** + * The HTML element or React element used to render the button, e.g. 'div', 'a', or `RouterLink`. + * + * @default 'a' + */ + elementType?: E; +} & NavigationLinkBaseProps; + +export interface SpiritNavigationItemProps extends ChildrenProps, StyleProps {} + +export type SpiritNavigationLinkProps = NavigationLinkProps & + SpiritPolymorphicElementPropsWithRef>; + +export interface SpiritNavigationProps extends StyleProps, AriaLabelingProps { + children: + | ReactElement + | ReactElement + | Array | ReactElement>; +} diff --git a/packages/web-react/src/types/unstableHeader.ts b/packages/web-react/src/types/unstableHeader.ts index bf3186a998..f970e0592f 100644 --- a/packages/web-react/src/types/unstableHeader.ts +++ b/packages/web-react/src/types/unstableHeader.ts @@ -1,6 +1,6 @@ -import { ChildrenProps, SpiritPolymorphicElementPropsWithRef, StyleProps, TransferProps } from './shared'; -import { LinkTarget } from './link'; import { ElementType } from 'react'; +import { LinkTarget } from './link'; +import { ChildrenProps, SpiritPolymorphicElementPropsWithRef, StyleProps, TransferProps } from './shared'; export interface HeaderLogoBaseProps extends ChildrenProps, StyleProps, TransferProps { /** Header's href attribute */ diff --git a/tests/e2e/demo-homepages.spec.ts-snapshots/web-react-chromium-linux.png b/tests/e2e/demo-homepages.spec.ts-snapshots/web-react-chromium-linux.png index ba01f4b6b54ce5954fef82ca9a3a56fb3785ee57..8ca7ae2480b7c4aa19e245aabd56be9cb4c42d9f 100644 GIT binary patch delta 47129 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 H{jYxmJQDP5 delta 42808 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