@entur/menu 6.3.1 → 7.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,4 +7,4 @@ export type BreadcrumbNavigationProps = Omit<React.HTMLAttributes<HTMLElement>,
7
7
  /** En liste med BreadcrumbItem-er */
8
8
  children: React.ReactNode;
9
9
  };
10
- export declare const BreadcrumbNavigation: React.FC<BreadcrumbNavigationProps>;
10
+ export declare const BreadcrumbNavigation: ({ "aria-label": ariaLabel, className, children, ...rest }: BreadcrumbNavigationProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  import { SideNavigationProps } from './SideNavigation';
3
2
  type CollapsibleSideNavigationProps = SideNavigationProps & {
4
3
  /**Tilstand til menyen
@@ -20,7 +19,7 @@ type CollapsibleSideNavigationProps = SideNavigationProps & {
20
19
  */
21
20
  closeSideMenuAriaLabel?: string;
22
21
  };
23
- export declare const CollapsibleSideNavigation: React.FC<CollapsibleSideNavigationProps>;
22
+ export declare const CollapsibleSideNavigation: ({ className, children, size, collapsed: collapsible, onCollapseToggle, collapsibleButtonPosition, openSideMenuAriaLabel, closeSideMenuAriaLabel, ...rest }: CollapsibleSideNavigationProps) => import("react/jsx-runtime").JSX.Element;
24
23
  export declare const useSideNavigationContext: () => {
25
24
  isCollapsed: boolean;
26
25
  };
@@ -27,7 +27,7 @@ export type OverflowMenuProps = {
27
27
  */
28
28
  'aria-label'?: string;
29
29
  };
30
- export declare const OverflowMenu: ({ children, className, button, buttonIcon, placement, "aria-label": ariaLabel, ...rest }: OverflowMenuProps) => React.JSX.Element;
30
+ export declare const OverflowMenu: ({ children, className, button, buttonIcon, placement, "aria-label": ariaLabel, ...rest }: OverflowMenuProps) => import("react/jsx-runtime").JSX.Element;
31
31
  type OverflowMenuItemBaseProps = {
32
32
  /** Innholdet til OverflowMenuItem */
33
33
  children: React.ReactNode;
@@ -43,12 +43,12 @@ type OverflowMenuItemBaseProps = {
43
43
  disabled?: boolean;
44
44
  };
45
45
  export type OverflowMenuItemProps<C extends React.ElementType> = PolymorphicComponentProps<C, OverflowMenuItemBaseProps>;
46
- export declare const OverflowMenuItem: <C extends React.ElementType = "button">({ children, className, onSelect, href, disabled, as, ...rest }: OverflowMenuItemProps<C>) => React.JSX.Element;
46
+ export declare const OverflowMenuItem: <C extends React.ElementType = "button">({ children, className, onSelect, href, disabled, as, ...rest }: OverflowMenuItemProps<C>) => import("react/jsx-runtime").JSX.Element;
47
47
  type OverflowMenuLinkExtendedBaseProps = {
48
48
  /**
49
49
  * @deprecated onSelect is no longer used
50
50
  * in OverflowMenuLink, use 'href' instead */
51
51
  onSelect?: () => void;
52
52
  };
53
- export declare const OverflowMenuLink: <C extends React.ElementType = "a">(props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps) => React.JSX.Element;
53
+ export declare const OverflowMenuLink: <C extends React.ElementType = "a">(props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps) => import("react/jsx-runtime").JSX.Element;
54
54
  export {};
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  export type PaginationProps = {
3
2
  /** Ekstra klassenavn */
4
3
  className?: string;
@@ -65,4 +64,4 @@ export type PaginationProps = {
65
64
  showNumberOfResultsLabel?: string;
66
65
  [key: string]: any;
67
66
  };
68
- export declare const Pagination: React.FC<PaginationProps>;
67
+ export declare const Pagination: ({ className, currentPage, inputLabel, onPageChange, pageCount, pageLabel, previousPageLabel, currentPageLabelForScreenreader, lastPageLabelForScreenreader, showInput, numberOfResults, resultsPerPage, resultsPerPageOptions, onResultsPerPageChange, showNumberOfResultsLabel, nextPageLabel, showingResultsLabel, changeNumberOfResultsLabelForScreenreader, hideNextButton, hidePrevButton, ...rest }: PaginationProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,8 +1,7 @@
1
- import { default as React } from 'react';
2
1
  export type PaginationInputProps = {
3
2
  currentPage: number;
4
3
  label?: string;
5
4
  onPageChange: (pageNumber: number) => void;
6
5
  pageCount: number;
7
6
  };
8
- export declare const PaginationInput: React.FC<PaginationInputProps>;
7
+ export declare const PaginationInput: ({ currentPage, pageCount, label, onPageChange, }: PaginationInputProps) => import("react/jsx-runtime").JSX.Element;
@@ -14,4 +14,4 @@ export type PaginationPageProps = {
14
14
  'aria-label': string;
15
15
  'aria-describedby'?: string;
16
16
  };
17
- export declare const PaginationPage: React.FC<PaginationPageProps>;
17
+ export declare const PaginationPage: ({ children, className, selected, disabled, onClick, "aria-label": ariaLabel, "aria-describedby": ariaDescribedby, }: PaginationPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  export type SideNavigationProps = {
3
2
  /** Ekstra klassenavn */
4
3
  className?: string;
@@ -8,8 +7,6 @@ export type SideNavigationProps = {
8
7
  size?: 'small' | 'medium';
9
8
  [key: string]: any;
10
9
  };
11
- type InternalMarker = {
12
- __IS_ENTUR_MENU__: boolean;
10
+ export declare const SideNavigation: (({ className, children, size, ...rest }: SideNavigationProps) => import("react/jsx-runtime").JSX.Element | null) & {
11
+ __IS_ENTUR_MENU__: true;
13
12
  };
14
- export declare const SideNavigation: React.FC<SideNavigationProps> & InternalMarker;
15
- export {};
@@ -17,4 +17,4 @@ export type SideNavigationGroupProps = {
17
17
  icon?: React.ReactNode;
18
18
  [key: string]: any;
19
19
  };
20
- export declare const SideNavigationGroup: React.FC<SideNavigationGroupProps>;
20
+ export declare const SideNavigationGroup: ({ defaultOpen, open, onToggle, className, children, title, icon, ...rest }: SideNavigationGroupProps) => import("react/jsx-runtime").JSX.Element;
package/dist/Stepper.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { default as React } from 'react';
2
1
  export type StepperProps = {
3
2
  /** Liste med steg-navn i rekkefølge. */
4
3
  steps: string[];
@@ -35,4 +34,4 @@ export type StepperProps = {
35
34
  ariaLabelSummary?: string;
36
35
  [key: string]: any;
37
36
  };
38
- export declare const Stepper: React.FC<StepperProps>;
37
+ export declare const Stepper: ({ activeIndex, className, interactive, onStepClick, showStepperIndex, steps, ariaLabelStep, ariaLabelOf, ariaLabelCompleted, ariaLabelSummary, ...rest }: StepperProps) => import("react/jsx-runtime").JSX.Element;
package/dist/menu.cjs.js CHANGED
@@ -149,30 +149,21 @@ const Logo = React.forwardRef(
149
149
  href: typeof Element !== "string" || Element === "a" ? href : void 0,
150
150
  ...rest,
151
151
  children: [
152
- /* @__PURE__ */ jsxRuntime.jsx(
153
- EnturSvgLogo,
154
- {
155
- className: "eds-logo__svg",
156
- label: productName ? `Entur ${productName} logo` : "Entur logo"
157
- }
158
- ),
159
- productName && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "eds-logo__product-name", "aria-hidden": "true", children: productName })
152
+ /* @__PURE__ */ jsxRuntime.jsx(EnturSvgLogo, { className: "eds-logo__svg" }),
153
+ productName && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "eds-logo__product-name", children: productName })
160
154
  ]
161
155
  }
162
156
  );
163
157
  }
164
158
  );
165
- const EnturSvgLogo = ({
166
- className,
167
- label
168
- }) => /* @__PURE__ */ jsxRuntime.jsxs(
159
+ const EnturSvgLogo = ({ className }) => /* @__PURE__ */ jsxRuntime.jsxs(
169
160
  "svg",
170
161
  {
171
162
  className,
172
163
  viewBox: "0 0 68.625 20.8254",
173
164
  xmlns: "http://www.w3.org/2000/svg",
174
165
  role: "img",
175
- "aria-label": label,
166
+ "aria-label": "Entur",
176
167
  focusable: "false",
177
168
  children: [
178
169
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -468,7 +459,7 @@ const Pagination = ({
468
459
  ...rest
469
460
  }) => {
470
461
  const [listedEntries, setListedEntries] = React.useState([]);
471
- const paginationId = utils.useRandomId("eds-pagination");
462
+ const paginationId = `eds-pagination${React.useId()}`;
472
463
  const isFirstPostSelected = currentPage === 1;
473
464
  const isLastPostSelected = currentPage === pageCount;
474
465
  const noEllipsis = pageCount <= 7;
@@ -611,7 +602,7 @@ const Pagination = ({
611
602
  );
612
603
  };
613
604
  const Ellipsis = () => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "eds-pagination__controls__page__ellipsis", "aria-hidden": "true", children: "…" });
614
- const SideNavigation = ({
605
+ const SideNavigationBase = ({
615
606
  className,
616
607
  children,
617
608
  size = "medium",
@@ -633,7 +624,9 @@ const SideNavigation = ({
633
624
  }
634
625
  );
635
626
  };
636
- SideNavigation.__IS_ENTUR_MENU__ = true;
627
+ const SideNavigation = Object.assign(SideNavigationBase, {
628
+ __IS_ENTUR_MENU__: true
629
+ });
637
630
  const useShowDelayedLabel = (isCollapsed) => {
638
631
  const [showLabel, setShowLabel] = React.useState(true);
639
632
  const hideDelay = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"menu.cjs.js","sources":["../src/BreadcrumbNavigation.tsx","../src/BreadcrumbItem.tsx","../src/CollapsibleSideNavigation.tsx","../src/Logo.tsx","../src/OverflowMenu.tsx","../src/PaginationPage.tsx","../src/PaginationInput.tsx","../src/Pagination.tsx","../src/SideNavigation.tsx","../src/useShowDelayedLabel.ts","../src/SideNavigationItem.tsx","../src/SideNavigationGroup.tsx","../src/Stepper.tsx","../src/TopNavigationItem.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nimport './BreadcrumbNavigation.scss';\n\nexport type BreadcrumbNavigationProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n 'aria-label' | 'children'\n> & {\n /** Label for brødsmulestien.\n * @default 'Brødsmulesti'\n */\n 'aria-label'?: string;\n /** En liste med BreadcrumbItem-er */\n children: React.ReactNode;\n};\n\nexport const BreadcrumbNavigation: React.FC<BreadcrumbNavigationProps> = ({\n 'aria-label': ariaLabel = 'Brødsmulesti',\n className,\n children,\n ...rest\n}) => {\n const childrenArray = React.Children.toArray(children);\n\n const _children = childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n if (process.env.NODE_ENV !== 'production')\n console.warn('Received a non-element child, it will be ignored.');\n\n return null;\n }\n\n const element = child as React.ReactElement<any>;\n return React.cloneElement(element, {\n isCurrent: index + 1 === childrenArray.length,\n });\n });\n\n return (\n <nav\n className={classNames('eds-breadcrumbs', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <ol className=\"eds-breadcrumbs__list\">{_children}</ol>\n </nav>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type BreadcrumbItemOwnProps = {\n /** Komponenten som rendres\n * @default \"a\"\n */\n as?: 'a' | React.ElementType;\n /** Teksten som vises */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** @internal\n * Markerer aktivt element, i.e. siste element.\n * Settes automatisk av BreadcrumbNavigation og kan ikke overskrives */\n isCurrent?: boolean;\n};\n\nexport type BreadcrumbItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, BreadcrumbItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const BreadcrumbItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n className,\n isCurrent,\n as,\n ...rest\n}: BreadcrumbItemProps<E>): JSX.Element => {\n const Element: React.ElementType =\n as || (isCurrent ? 'span' : defaultElement);\n return (\n <li className={classNames('eds-breadcrumbs__item', className)}>\n <Element\n aria-current={isCurrent ? 'page' : undefined}\n className={classNames('eds-breadcrumbs__item__link', {\n 'eds-breadcrumbs__item__link--current': isCurrent,\n })}\n {...rest}\n />\n {!isCurrent && (\n <RightArrowIcon\n className=\"eds-breadcrumbs__separator\"\n inline\n role=\"presentation\"\n />\n )}\n </li>\n );\n};\n","import React from 'react';\nimport { SideNavigationProps } from './SideNavigation';\nimport { useControllableProp } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, MenuIcon } from '@entur/icons';\n\ntype CollapsibleSideNavigationProps = SideNavigationProps & {\n /**Tilstand til menyen\n * @default false\n */\n collapsed?: boolean;\n /** Kalles når menyen åpnes eller lukkes */\n onCollapseToggle?: (e: any) => void;\n /** Posisjonen til Collapsible-knappen, målt fra toppen (som CSS-enhet)\n * @default 50%\n */\n collapsibleButtonPosition?: string;\n /** Aria-label for knappen som åpner menyen\n * @default \"Åpne sidemeny\"\n */\n openSideMenuAriaLabel?: string;\n /** Aria-label for knappen som lukker menyen\n * @default \"Lukk sidemeny\"\n */\n closeSideMenuAriaLabel?: string;\n};\n\nexport const CollapsibleSideNavigation: React.FC<\n CollapsibleSideNavigationProps\n> = ({\n className,\n children,\n size,\n collapsed: collapsible,\n onCollapseToggle,\n collapsibleButtonPosition = '50%',\n openSideMenuAriaLabel = 'Åpne sidemeny',\n closeSideMenuAriaLabel = 'Lukk sidemeny',\n ...rest\n}) => {\n const [collapsedMenu, setCollapsedMenu] = useControllableProp({\n prop: collapsible,\n defaultValue: false,\n updater: onCollapseToggle,\n });\n\n return (\n <SideNavigationContext.Provider\n value={{\n isCollapsed: collapsedMenu,\n }}\n >\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n { 'eds-side-navigation--collapsed': collapsedMenu },\n className,\n )}\n {...rest}\n >\n {children}\n <button\n className=\"eds-side-navigation__collapse-button\"\n onClick={() => setCollapsedMenu(!collapsedMenu)}\n style={{ top: `${collapsibleButtonPosition}` }}\n >\n {collapsedMenu ? (\n <MenuIcon aria-label={openSideMenuAriaLabel} />\n ) : (\n <LeftArrowIcon aria-label={closeSideMenuAriaLabel} />\n )}\n </button>\n </ul>\n </SideNavigationContext.Provider>\n );\n};\n\nconst SideNavigationContext = React.createContext<{\n isCollapsed: boolean;\n}>({\n isCollapsed: false,\n});\n\nexport const useSideNavigationContext: () => { isCollapsed: boolean } = () => {\n const context = React.useContext(SideNavigationContext);\n if (!context) {\n console.error(\n 'Error reading SideNavigationContext. Please contact maintainer of @entur/menu',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport './Logo.scss';\n\nexport type LogoOwnProps = {\n /** Produktnavnet som vises etter Entur-logoen (f.eks. \"Tavla\", \"Partner\") */\n productName?: string;\n /** Størrelsen på logoen\n * @default 'medium'\n */\n size?: 'medium' | 'small';\n /** URL-en logoen lenker til. Gjør at komponenten rendres som en lenke */\n href?: string;\n /** HTML-elementet eller React-komponenten som brukes\n * @default 'div' (eller 'a' hvis href er satt)\n */\n as?: React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: never;\n};\n\nexport type LogoProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentPropsWithRef<T, LogoOwnProps>;\n\nexport type LogoComponent = <\n E extends React.ElementType = typeof defaultElement,\n>(\n props: LogoProps<E>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Logo: LogoComponent = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n productName,\n size = 'medium',\n href,\n as,\n className,\n ...rest\n }: LogoProps<E>,\n ref: PolymorphicRef<E>,\n ) => {\n const Element: React.ElementType = as || (href ? 'a' : defaultElement);\n\n return (\n <Element\n className={classNames('eds-logo', `eds-logo--${size}`, className)}\n ref={ref}\n href={typeof Element !== 'string' || Element === 'a' ? href : undefined}\n {...rest}\n >\n <EnturSvgLogo\n className=\"eds-logo__svg\"\n label={productName ? `Entur ${productName} logo` : 'Entur logo'}\n />\n {productName && (\n <span className=\"eds-logo__product-name\" aria-hidden=\"true\">\n {productName}\n </span>\n )}\n </Element>\n );\n },\n);\n\nconst EnturSvgLogo: React.FC<{ className?: string; label: string }> = ({\n className,\n label,\n}) => (\n <svg\n className={className}\n viewBox=\"0 0 68.625 20.8254\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label={label}\n focusable=\"false\"\n >\n {/* E */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"10.422 14.49 10.422 12.036 2.707 12.036 2.707 8.533 9.552 8.533 9.552 6.079 2.707 6.079 2.707 2.455 10.422 2.455 10.422 0 0 0 0 14.49\"\n />\n {/* n */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"13.495 0 13.205 0 13.205 14.49 15.912 14.49 15.912 5.881 25.212 14.49 25.502 14.49 25.502 0 22.794 0 22.794 8.77\"\n />\n {/* Red bar under EN */}\n <polygon\n className=\"eds-logo__entur-bar\"\n points=\"25.501 17.824 0 17.824 0 20.052 25.501 20.052\"\n />\n {/* T */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"32.607 8.532 32.607 20.567 35.313 20.567 35.313 8.532 39.354 8.532 39.354 6.077 28.546 6.077 28.546 8.532\"\n />\n {/* U */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M50.935 6.076v8.651c0 .726-.116 1.326-.348 1.802-.232.475-.519.85-.861 1.127-.341.278-.708.469-1.102.574-.392.107-.744.158-1.053.158-.309 0-.661-.051-1.054-.158-.393-.105-.76-.296-1.101-.574-.343-.277-.629-.652-.861-1.127-.232-.476-.348-1.076-.348-1.802v-8.651H41.5v8.651c0 .924.144 1.762.435 2.515.289.751.699 1.389 1.227 1.918.529.53 1.168.938 1.916 1.23.746.288 1.577.435 2.493.435.928 0 1.765-.147 2.513-.435.747-.292 1.384-.7 1.914-1.23.529-.529.935-1.167 1.218-1.918.284-.753.425-1.591.425-2.515v-8.651z\"\n />\n {/* R */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M56.734 6.076v14.49h2.708v-4.612h2.679l3.277 4.612h3.227l-3.524-4.869c.438-.12.843-.328 1.211-.624.368-.296.678-.65.93-1.059.252-.41.448-.869.59-1.376.142-.507.214-1.033.214-1.573 0-.726-.121-1.397-.36-2.01-.238-.614-.57-1.141-.997-1.583-.425-.442-.939-.784-1.54-1.028-.503-.247-1.165-.369-1.888-.369zm2.708 2.456h3.083c.501 0 .929.065 1.281.198.354.13.642.309.866.533.227.225.394.489.503.792.108.304.163.632.163.991 0 .303-.038.603-.116.899-.076.298-.22.566-.433.802-.211.239-.501.43-.866.574-.368.145-.832.218-1.398.218h-3.083z\"\n />\n </svg>\n);\n","import React, {\n cloneElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n FloatingList,\n autoUpdate,\n flip,\n offset,\n shift,\n useFloating,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react';\n\nimport { IconButton } from '@entur/button';\nimport { VerticalDotsIcon } from '@entur/icons';\nimport { Placement, standardisePlacement } from '@entur/tooltip';\nimport { space } from '@entur/tokens';\nimport {\n PolymorphicComponentProps,\n getNodeText,\n useOnClickOutside,\n useOnEscape,\n} from '@entur/utils';\n\nimport './OverflowMenu.scss';\n\nexport type OverflowMenuProps = {\n /** Menypunkter (OverflowMenuItem eller OverflowMenuLink) */\n children: React.ReactNode;\n buttonIcon?: React.ReactNode;\n /** Knapp som skal åpne OverflowMenu\n * @default IconButton med VerticalDotsIcon\n */\n button?: React.ReactElement;\n /** Ekstra klassenavn */\n className?: string;\n /** Posisjoneringen av OverflowMenu-lista\n * @default 'bottom-start'\n */\n placement?: Placement;\n /**\n * @deprecated Use placement insted.\n * This is done to standardise the name of\n * the relative position prop used in Entur\n * designs sytstem components\n */\n position?: 'right' | 'left';\n /** Tekst som beskriver knappen som åpner Overflow-menyen\n * @default \"åpne valgmeny\"\n */\n 'aria-label'?: string;\n};\n\ninterface SelectContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>['getItemProps'];\n closeMenuAndReturnFocus: () => void;\n}\n\nconst SelectContext = React.createContext<SelectContextValue>(\n {} as SelectContextValue,\n);\n\nexport const OverflowMenu = ({\n children,\n className,\n button,\n buttonIcon,\n placement = 'bottom-start',\n 'aria-label': ariaLabel = 'åpne valgmeny',\n ...rest\n}: OverflowMenuProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef([]);\n const labelsRef = useRef([]);\n\n const { refs, floatingStyles, context, elements, update } = useFloating({\n placement: standardisePlacement(\n // check for left is added for backwards compatibility\n rest.position === 'left' ? 'bottom-end' : placement,\n ),\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(space.extraSmall2),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (isOpen && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [isOpen, elements, update]);\n\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n });\n\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n activeIndex,\n onMatch: index => isOpen && setActiveIndex(index),\n });\n\n const role = useRole(context, { role: 'menu' });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [listNav, typeahead, role],\n );\n\n const closeMenuAndReturnFocus = () => {\n setIsOpen(false);\n // @ts-expect-error the reference element is actually focusable\n refs.reference.current?.focus?.();\n };\n\n useOnClickOutside([refs.floating, refs.reference], () => setIsOpen(false));\n useOnEscape(refs.floating, closeMenuAndReturnFocus);\n useOnEscape(refs.reference, closeMenuAndReturnFocus);\n\n const selectContext = React.useMemo(\n () => ({\n activeIndex,\n getItemProps,\n closeMenuAndReturnFocus,\n }),\n [activeIndex, getItemProps, closeMenuAndReturnFocus],\n );\n\n const _buttonIcon = buttonIcon ?? <VerticalDotsIcon />;\n\n return (\n <>\n {!button ? (\n <IconButton\n ref={refs.setReference}\n {...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n })}\n {...rest}\n >\n {_buttonIcon}\n </IconButton>\n ) : (\n cloneElement(button, {\n ref: refs.setReference,\n ...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n }),\n ...rest,\n })\n )}\n <SelectContext.Provider value={selectContext}>\n <div\n ref={refs.setFloating}\n style={{ ...floatingStyles, display: isOpen ? 'initial' : 'none' }}\n {...getFloatingProps({\n className: 'eds-overflow-menu__menu-list',\n })}\n >\n <FloatingList elementsRef={listRef} labelsRef={labelsRef}>\n {children}\n </FloatingList>\n </div>\n </SelectContext.Provider>\n </>\n );\n};\n\ntype OverflowMenuItemBaseProps = {\n /** Innholdet til OverflowMenuItem */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Det som skjer når elementet er valgt, enten ved museklikk eller Enter-klikk */\n onSelect?: () => void;\n /** Lenke til siden brukeren skal sendes til.\n * Obs: kun én av onSelect og href skal brukes på ett element\n */\n href?: string;\n /** Om dette valget skal være deaktivert */\n disabled?: boolean;\n};\n\nexport type OverflowMenuItemProps<C extends React.ElementType> =\n PolymorphicComponentProps<C, OverflowMenuItemBaseProps>;\n\nexport const OverflowMenuItem = <C extends React.ElementType = 'button'>({\n children,\n className,\n onSelect = () => undefined,\n href,\n disabled,\n as,\n ...rest\n}: OverflowMenuItemProps<C>) => {\n const { activeIndex, getItemProps, closeMenuAndReturnFocus } =\n useContext(SelectContext);\n const { ref: listItemRef, index } = useListItem({\n label: !disabled ? getNodeText(children) : null,\n });\n\n const isHighlighted = activeIndex === index;\n const isLink = href !== undefined;\n\n const Element = as ?? (isLink ? 'a' : 'button');\n\n return (\n <Element\n ref={listItemRef}\n className={classNames(\n 'eds-overflow-menu__item',\n {\n 'eds-overflow-menu__item--disabled': disabled,\n 'eds-overflow-menu__item--highlighted': isHighlighted,\n },\n className,\n )}\n role=\"menuitem\"\n type={Element === 'button' ? 'button' : undefined}\n aria-disabled={disabled}\n aria-selected={isHighlighted}\n {...getItemProps({\n onClick:\n isLink || disabled\n ? undefined\n : () => {\n onSelect();\n closeMenuAndReturnFocus();\n },\n href: disabled ? undefined : href,\n tabIndex: isHighlighted ? 0 : -1,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n\ntype OverflowMenuLinkExtendedBaseProps = {\n /**\n * @deprecated onSelect is no longer used\n * in OverflowMenuLink, use 'href' instead */\n onSelect?: () => void;\n};\n\nexport const OverflowMenuLink = <C extends React.ElementType = 'a'>(\n props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps,\n) => {\n return <OverflowMenuItem {...props} />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type PaginationPageProps = {\n /** Sidenummeret som er aktivt nå */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Viser siden som aktiv */\n selected?: boolean;\n /** Viser knappen som inaktiv */\n disabled?: boolean;\n /** Callback for når man trykker på siden */\n onClick: () => void;\n /** Tekst for skjermlesere */\n 'aria-label': string;\n 'aria-describedby'?: string;\n};\nexport const PaginationPage: React.FC<PaginationPageProps> = ({\n children,\n className,\n selected,\n disabled,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n}) => (\n <button\n className={classNames(\n 'eds-pagination__controls__page',\n { 'eds-pagination__controls__page--selected': selected },\n { 'eds-pagination__controls__page--disabled': disabled },\n className,\n )}\n disabled={selected || disabled}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-current={selected ? 'page' : false}\n >\n {children}\n </button>\n);\n","import React from 'react';\n\nexport type PaginationInputProps = {\n currentPage: number;\n label?: string;\n onPageChange: (pageNumber: number) => void;\n pageCount: number;\n};\n\nexport const PaginationInput: React.FC<PaginationInputProps> = ({\n currentPage,\n pageCount,\n label = 'Gå til side',\n onPageChange,\n}) => {\n const [input, setInput] = React.useState(String(currentPage));\n // If the currentPage prop changes, we want to reset the input field\n React.useEffect(() => {\n setInput(String(currentPage));\n }, [currentPage]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n let pageNumber = Number(input);\n if (pageNumber === currentPage) {\n return;\n }\n if (Number.isNaN(pageNumber)) {\n pageNumber = currentPage;\n setInput(String(currentPage));\n return;\n }\n if (pageNumber > pageCount) {\n pageNumber = pageCount;\n setInput(String(pageCount));\n } else if (pageNumber < 1) {\n pageNumber = 1;\n setInput(String(1));\n }\n onPageChange(pageNumber);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInput(e.target.value);\n };\n\n return (\n <form onSubmit={handleSubmit} noValidate aria-label=\"form\">\n <label className=\"eds-pagination__controls__input__wrapper\">\n <span className=\"eds-pagination__controls__input__label\">{label}</span>\n <input\n type=\"number\"\n max={pageCount}\n className=\"eds-pagination__controls__input__field\"\n value={input}\n onChange={handleChange}\n />\n </label>\n </form>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { Label } from '@entur/typography';\nimport { useRandomId } from '@entur/utils';\n\nimport { PaginationPage } from './PaginationPage';\nimport { PaginationInput } from './PaginationInput';\nimport { OverflowMenu, OverflowMenuItem } from './OverflowMenu';\n\nimport './Pagination.scss';\n\nexport type PaginationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Sidenummeret som er aktivt nå (1-indeksert) */\n currentPage: number;\n /** Callback for når man ønsker å gå til en ny side */\n onPageChange: (requestedPage: number) => void;\n /** Antall sider totalt */\n pageCount: number;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default \"Gå til forrige side\"\n */\n previousPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"neste side knappen\"\n * @default \"Gå til neste side\"\n */\n nextPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default pageNumber => `Gå til side ${pageNumber}`,\n */\n pageLabel?: (pageNumber: number) => string;\n /**\n * @default \"Nåværende side:\"\n */\n currentPageLabelForScreenreader?: string;\n /** Vis et felt til høyre for pagineringen hvor man kan angi siden man\n * ønsker å vise i et tekstfelt.\n *\n * @default false\n */\n showInput?: boolean;\n /** Label som vises til venstre for input-feltet som vises om `showInput` er true\n * @default \"Gå til side\"\n */\n inputLabel?: string;\n\n /** Hvor mange resultater man har totalt */\n numberOfResults?: number;\n /** Hvor mange resultater som vises per side */\n resultsPerPage?: number;\n /**\n * @default [10,25,50]\n */\n resultsPerPageOptions?: number[];\n /** Callback for når resultater per side oppdateres */\n onResultsPerPageChange?: (e: number) => void;\n /** Brukes for å skjule \"neste side\"-knappen\n * @default false\n */\n hideNextButton?: boolean;\n /** Brukes for å skjule \"forrige side\"-knappen\n * @default false\n */\n hidePrevButton?: boolean;\n /** Teksten som vises for hvilke resultater av sideantallet man viser.\n * @default `Viser resultat ${minPage} - ${maxPage} av ${pageCount}`\n */\n showingResultsLabel?: (\n minPage: number,\n maxPage: number,\n pageCount: number,\n ) => string;\n /** Teksten som vises før \"resultsPerPage\"-velgeren\n * @default \"Vis\"\n */\n showNumberOfResultsLabel?: string;\n [key: string]: any;\n};\n\nexport const Pagination: React.FC<PaginationProps> = ({\n className,\n currentPage,\n inputLabel,\n onPageChange,\n pageCount,\n pageLabel = pageNumber => `Gå til side ${pageNumber}`,\n previousPageLabel = 'Gå til forrige side',\n currentPageLabelForScreenreader = 'Nåværende side:',\n lastPageLabelForScreenreader = ', siste side',\n showInput,\n\n numberOfResults,\n resultsPerPage,\n resultsPerPageOptions = [10, 25, 50],\n onResultsPerPageChange,\n\n showNumberOfResultsLabel = 'Vis',\n nextPageLabel = 'Gå til neste side',\n showingResultsLabel = (minPage, maxPage, pageCount) =>\n `Viser resultat ${minPage}–${maxPage} av ${pageCount}`,\n changeNumberOfResultsLabelForScreenreader = `Viser ${resultsPerPage} resultater. Trykk for å endre antall. Åpner en flervalgsmeny.`,\n hideNextButton = false,\n hidePrevButton = false,\n ...rest\n}) => {\n const [listedEntries, setListedEntries] = useState<Array<number | '…'>>([]);\n const paginationId = useRandomId('eds-pagination');\n\n const isFirstPostSelected = currentPage === 1;\n const isLastPostSelected = currentPage === pageCount;\n const noEllipsis = pageCount <= 7;\n const onlyLeadingEllipsis = !noEllipsis && currentPage < 5;\n const onlyTrailingEllipsis = !noEllipsis && pageCount - currentPage <= 3;\n\n useEffect(() => {\n if (pageCount < 1) return;\n if (noEllipsis) {\n setListedEntries(\n Array(pageCount)\n .fill(null)\n .map((_, i) => i + 1),\n );\n } else if (onlyLeadingEllipsis) {\n setListedEntries([1, 2, 3, 4, 5, '…', pageCount]);\n } else if (onlyTrailingEllipsis) {\n setListedEntries([\n 1,\n '…',\n pageCount - 4,\n pageCount - 3,\n pageCount - 2,\n pageCount - 1,\n pageCount,\n ]);\n } else {\n // leading and trailing ellipsis\n setListedEntries([\n 1,\n '…',\n currentPage - 1,\n currentPage,\n currentPage + 1,\n '…',\n pageCount,\n ]);\n }\n }, [\n noEllipsis,\n onlyLeadingEllipsis,\n onlyTrailingEllipsis,\n currentPage,\n pageCount,\n ]);\n\n if (pageCount < 1) {\n return null;\n }\n\n return (\n <nav\n className={classNames('eds-pagination', className)}\n aria-label=\"Paginering\"\n {...rest}\n >\n {resultsPerPage && numberOfResults && (\n <div className=\"eds-pagination__results\">\n {onResultsPerPageChange && (\n <>\n <Label as=\"p\" aria-hidden=\"true\">\n {showNumberOfResultsLabel}\n </Label>\n <OverflowMenu\n className=\"eds-pagination__results__change-number-of-results\"\n buttonIcon={\n <span className=\"eds-pagination__results__change-number-of-results__content\">\n {resultsPerPage}{' '}\n <DownArrowIcon\n className=\"eds-pagination__results__change-number-of-results__content__arrow\"\n aria-hidden=\"true\"\n />\n </span>\n }\n aria-label={changeNumberOfResultsLabelForScreenreader}\n placement=\"bottom-end\"\n >\n {resultsPerPageOptions.map((option: number, key: number) => (\n <OverflowMenuItem\n key={key}\n onSelect={() => onResultsPerPageChange(option)}\n >\n {option}\n </OverflowMenuItem>\n ))}\n </OverflowMenu>\n </>\n )}\n <Label as=\"p\">\n {showingResultsLabel(\n (currentPage - 1) * resultsPerPage + 1,\n currentPage * resultsPerPage > numberOfResults\n ? numberOfResults\n : currentPage * resultsPerPage,\n numberOfResults,\n )}\n </Label>\n </div>\n )}\n <div className=\"eds-pagination__controls\">\n {!hidePrevButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage - 1)}\n aria-label={previousPageLabel}\n aria-describedby={paginationId}\n disabled={isFirstPostSelected}\n >\n <LeftArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {listedEntries.map((entry, index) =>\n entry === '…' ? (\n <Ellipsis key={`ellipsis-${index}`} />\n ) : (\n <PaginationPage\n selected={entry === currentPage}\n onClick={() => onPageChange(entry)}\n aria-label={`${pageLabel(entry)}${\n entry === pageCount ? lastPageLabelForScreenreader : ''\n }`}\n aria-describedby={\n entry !== currentPage ? paginationId : undefined\n }\n key={entry}\n >\n {entry}\n </PaginationPage>\n ),\n )}\n {!hideNextButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage + 1)}\n aria-label={nextPageLabel}\n aria-describedby={paginationId}\n disabled={isLastPostSelected}\n >\n <RightArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {showInput && (\n <PaginationInput\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={onPageChange}\n label={inputLabel}\n />\n )}\n </div>\n <VisuallyHidden id={paginationId}>\n {currentPageLabelForScreenreader} {currentPage}\n </VisuallyHidden>\n </nav>\n );\n};\n\nconst Ellipsis: React.FC = () => (\n <span className=\"eds-pagination__controls__page__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './SideNavigation.scss';\n\nexport type SideNavigationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse på menyen\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\ntype InternalMarker = {\n __IS_ENTUR_MENU__: boolean;\n};\n\nexport const SideNavigation: React.FC<SideNavigationProps> & InternalMarker = ({\n className,\n children,\n size = 'medium',\n ...rest\n}) => {\n if (!children || !React.Children.count(children)) {\n return null;\n }\n return (\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\n/** This is required to check that the Menu */\nSideNavigation.__IS_ENTUR_MENU__ = true;\n","import { useEffect, useState } from 'react';\n\nexport const useShowDelayedLabel = (isCollapsed: boolean): [boolean] => {\n const [showLabel, setShowLabel] = useState(true);\n const hideDelay = 50;\n const showDelay = 200;\n useEffect(() => {\n if (isCollapsed) {\n setTimeout(() => {\n setShowLabel(false);\n }, hideDelay);\n }\n if (!isCollapsed) {\n setTimeout(() => {\n setShowLabel(true);\n }, showDelay);\n }\n return () => undefined;\n }, [isCollapsed]);\n return [showLabel];\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nfunction isActiveRecursively(child: any): boolean {\n if (!child.props) {\n return false;\n }\n if (child.props.active) {\n return true;\n }\n if (!child.props.children) {\n return false;\n }\n\n return React.Children.toArray(child.props.children).some(child =>\n isActiveRecursively(child),\n );\n}\n\ntype BaseSideNavigationItemOwnProps = {\n active?: boolean;\n as?: 'a' | 'button' | React.ElementType;\n className?: string;\n icon?: React.ReactNode;\n children: React.ReactNode;\n subMenu?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type BaseSideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementBaseItem,\n> = PolymorphicComponentProps<T, BaseSideNavigationItemOwnProps>;\n\nconst defaultElementBaseItem = 'a';\n\nconst BaseSideNavigationItem: <\n E extends React.ElementType = typeof defaultElementBaseItem,\n>(\n props: BaseSideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementBaseItem>(\n {\n className,\n active = false,\n subMenu,\n icon,\n children,\n as,\n ...rest\n }: BaseSideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementBaseItem;\n const { isCollapsed } = useSideNavigationContext();\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n return (\n <li className={classNames('eds-side-navigation__item', className)}>\n <Element\n className={classNames('eds-side-navigation__click-target', {\n 'eds-side-navigation__click-target--active': active,\n })}\n aria-label={isCollapsed ? children : undefined}\n aria-current={active ? 'page' : undefined}\n ref={ref}\n {...rest}\n >\n {icon}\n {showLabel && children}\n </Element>\n {subMenu}\n </li>\n );\n },\n);\n\ntype DisabledSideNavigationItemProps = {\n children: React.ReactNode;\n [key: string]: any;\n};\nconst DisabledSideNavigationItem = React.forwardRef<\n HTMLButtonElement,\n DisabledSideNavigationItemProps\n>(({ children, ...rest }, ref: React.Ref<HTMLButtonElement>) => (\n <BaseSideNavigationItem\n as=\"button\"\n disabled={true}\n aria-disabled={true}\n ref={ref}\n type=\"button\"\n {...rest}\n >\n {children}\n </BaseSideNavigationItem>\n));\n\nexport type SideNavigationItemOwnProps = {\n /** Om meny-elementet er det som er aktivt */\n active?: boolean;\n /** HTML-elementet eller React-komponenten som rendres */\n as?: 'a' | 'button' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Om meny-elementet er deaktivert */\n disabled?: boolean;\n /** Callback for når man klikker på meny-elementet */\n onClick?: (e: React.MouseEvent) => any;\n /** Sett til true om du vil tvinge alle sub-menus til å rendre barna sine. Typisk for å vise søkeresultater */\n forceExpandSubMenus?: boolean;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type SideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementItem,\n> = PolymorphicComponentProps<T, SideNavigationItemOwnProps>;\n\nconst defaultElementItem = 'a';\n\nexport const SideNavigationItem: <\n E extends React.ElementType = typeof defaultElementItem,\n>(\n props: SideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementItem>(\n {\n active,\n disabled,\n children,\n forceExpandSubMenus,\n as,\n ...rest\n }: SideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementItem;\n const childrenArray = React.Children.toArray(children);\n const subMenu = childrenArray.find(\n (child: any) => child && child.type && child.type.__IS_ENTUR_MENU__,\n );\n const label = subMenu\n ? childrenArray.filter(child => child !== subMenu)\n : children;\n\n if (disabled) {\n return (\n <DisabledSideNavigationItem ref={ref} {...rest}>\n {label}\n </DisabledSideNavigationItem>\n );\n }\n\n if (!subMenu) {\n return (\n <BaseSideNavigationItem\n as={Element}\n active={active}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n }\n\n const isExpanded =\n forceExpandSubMenus ||\n isActiveRecursively({ props: { children, active } });\n\n return (\n <BaseSideNavigationItem\n active={active}\n subMenu={isExpanded && subMenu}\n aria-expanded={isExpanded}\n as={Element}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseExpand, ExpandArrow } from '@entur/expand';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { useControllableProp } from '@entur/utils';\n\nexport type SideNavigationGroupProps = {\n /** Skal menygruppen være ekspandert by default? Kun relevant om komponenten ikke er kontrollert\n * @default false\n */\n defaultOpen?: boolean;\n /** Er menyen åpen? */\n open?: boolean;\n /** Kalles når menygruppen åpnes eller lukkes */\n onToggle?: (e?: boolean) => void;\n /** Ekstra klassenavn */\n className?: string;\n /** Menyen som skal grupperes */\n children: React.ReactNode;\n /** Overskriften til menyen */\n title: React.ReactNode;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const SideNavigationGroup: React.FC<SideNavigationGroupProps> = ({\n defaultOpen = false,\n open,\n onToggle,\n className,\n children,\n title,\n icon,\n ...rest\n}) => {\n const [isOpen, setOpen] = useControllableProp({\n prop: open,\n updater: onToggle,\n defaultValue: defaultOpen,\n });\n const { isCollapsed } = useSideNavigationContext();\n\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n\n return (\n <div\n className={classNames('eds-side-navigation-group', className)}\n {...rest}\n >\n <button\n onClick={() => setOpen(!isOpen)}\n type=\"button\"\n className=\"eds-side-navigation-group__trigger\"\n aria-label={`${title}, utvidbar meny, ${isOpen ? 'åpen' : 'lukket'}`}\n >\n <span>\n {icon && (\n <span className=\"eds-side-navigation-group__trigger-icon\">\n {icon}\n </span>\n )}\n {showLabel && title}\n </span>\n {showLabel && (\n <ExpandArrow\n open={isOpen}\n className=\"eds-side-navigation-group__expand-icon\"\n />\n )}\n </button>\n <BaseExpand\n className=\"eds-side-navigation-group__expand-content\"\n open={isOpen}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport './Stepper.scss';\n\nexport type StepperProps = {\n /** Liste med steg-navn i rekkefølge. */\n steps: string[];\n /** Det nåværende steget. 0-indeksert */\n activeIndex: number;\n /** Om stepperen skal være et interaktivt-navigasjonselement eller ikke\n * @default false\n */\n interactive?: boolean;\n /** Kalles med indeksen til det klikkede steget.\n * Fungerer kun hvis Stepper-en er interaktiv */\n onStepClick?: (index: number) => void;\n /** Om stepper skal vise indeksering av hvilket trinn man er på\n * @default true\n */\n showStepperIndex?: boolean;\n /** Ekstra klassenavn. */\n className?: string;\n /** Skjermlesertekst for ordet 'steg' som i '_steg_ 1 av 3'\n * @default 'Steg'\n */\n ariaLabelStep?: string;\n /** Skjermlesertekst for ordet 'av' som i 'steg 1 _av_ 3'\n * @defaul 'av'\n */\n ariaLabelOf?: string;\n /** Skjermlesertekst for ordet fullført\n * @default 'fullført'\n */\n ariaLabelCompleted?: string;\n /** Skjermlesertekst for oppsummering av hele stepper-en\n * @default `Stegindikator med ${steps.length} steg, du er på steg ${activeIndex + 1} ${steps[activeIndex]},`\n */\n ariaLabelSummary?: string;\n [key: string]: any;\n};\n\nexport const Stepper: React.FC<StepperProps> = ({\n activeIndex,\n className,\n interactive = false,\n onStepClick,\n showStepperIndex = true,\n steps,\n ariaLabelStep = 'Steg',\n ariaLabelOf = 'av',\n ariaLabelCompleted = 'fullført',\n ariaLabelSummary = `Stegindikator med ${steps.length} steg, du er på steg ${\n activeIndex + 1\n } ${steps[activeIndex]},`,\n ...rest\n}) => {\n return (\n <ol\n className={classNames('eds-stepper', className)}\n aria-label={ariaLabelSummary}\n {...rest}\n >\n {steps.map((step, i) => {\n const isCurrent = i === activeIndex;\n const isInteractive = interactive && activeIndex > i;\n const Element = isInteractive ? 'button' : 'div';\n const isCompleted = activeIndex > i;\n const currentStepSummary = `${ariaLabelStep} ${i + 1} ${ariaLabelOf} ${\n steps.length\n }, ${step} ${isCompleted ? `, ${ariaLabelCompleted}` : ''}`;\n const props = isInteractive ? { onClick: () => onStepClick?.(i) } : {};\n\n return (\n <li key={step} className=\"eds-stepper__step__wrapper\">\n <Element\n className={classNames(\n 'eds-stepper__step',\n { 'eds-stepper__step--active': isCurrent },\n { 'eds-stepper__step--completed': isCompleted },\n { 'eds-stepper__step--interactive': isInteractive },\n )}\n aria-current={isCurrent ? 'step' : undefined}\n type={Element === 'button' ? 'button' : undefined}\n {...props}\n >\n <div className=\"eds-stepper__step__line\" aria-hidden={true} />\n <span className=\"eds-stepper__step__label\" aria-hidden={true}>\n {showStepperIndex && i + 1 + '.'} {step}\n </span>\n <VisuallyHidden>{currentStepSummary}</VisuallyHidden>\n </Element>\n </li>\n );\n })}\n </ol>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './TopNavigationItem.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TopNavigationItemOwnProps = {\n /** Om komponenten vises som valgt eller ikke\n * @default false\n */\n active?: boolean;\n /** Tekste som vises */\n children: React.ReactNode;\n /** HTML-elementet eller React-komponenten som lager komponenten\n * @default 'a'\n */\n as?: 'a' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type TopNavigationItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, TopNavigationItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const TopNavigationItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n active = false,\n className,\n as,\n ...rest\n}: TopNavigationItemProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n return (\n <Element\n className={classNames([\n 'eds-top-navigation-item',\n className,\n { 'eds-top-navigation-item--active': active },\n ])}\n {...rest}\n />\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles(\n 'menu',\n 'expand',\n 'icons',\n 'typography',\n 'button',\n 'layout',\n 'a11y',\n);\n\nexport * from './BreadcrumbNavigation';\nexport * from './BreadcrumbItem';\nexport * from './CollapsibleSideNavigation';\nexport * from './Logo';\nexport * from './OverflowMenu';\nexport * from './Pagination';\nexport * from './SideNavigation';\nexport * from './SideNavigationItem';\nexport * from './SideNavigationGroup';\nexport * from './Stepper';\nexport * from './TopNavigationItem';\n"],"names":["jsx","defaultElement","RightArrowIcon","useControllableProp","jsxs","MenuIcon","LeftArrowIcon","button","useState","useRef","useFloating","standardisePlacement","offset","space","flip","shift","useEffect","autoUpdate","useListNavigation","useTypeahead","useRole","useInteractions","useOnClickOutside","useOnEscape","VerticalDotsIcon","Fragment","IconButton","cloneElement","FloatingList","useContext","useListItem","getNodeText","pageCount","useRandomId","Label","DownArrowIcon","VisuallyHidden","child","ExpandArrow","BaseExpand","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"menu.cjs.js","sources":["../src/BreadcrumbNavigation.tsx","../src/BreadcrumbItem.tsx","../src/CollapsibleSideNavigation.tsx","../src/Logo.tsx","../src/OverflowMenu.tsx","../src/PaginationPage.tsx","../src/PaginationInput.tsx","../src/Pagination.tsx","../src/SideNavigation.tsx","../src/useShowDelayedLabel.ts","../src/SideNavigationItem.tsx","../src/SideNavigationGroup.tsx","../src/Stepper.tsx","../src/TopNavigationItem.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nimport './BreadcrumbNavigation.scss';\n\nexport type BreadcrumbNavigationProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n 'aria-label' | 'children'\n> & {\n /** Label for brødsmulestien.\n * @default 'Brødsmulesti'\n */\n 'aria-label'?: string;\n /** En liste med BreadcrumbItem-er */\n children: React.ReactNode;\n};\n\nexport const BreadcrumbNavigation = ({\n 'aria-label': ariaLabel = 'Brødsmulesti',\n className,\n children,\n ...rest\n}: BreadcrumbNavigationProps) => {\n const childrenArray = React.Children.toArray(children);\n\n const _children = childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n if (process.env.NODE_ENV !== 'production')\n console.warn('Received a non-element child, it will be ignored.');\n\n return null;\n }\n\n const element = child as React.ReactElement<any>;\n return React.cloneElement(element, {\n isCurrent: index + 1 === childrenArray.length,\n });\n });\n\n return (\n <nav\n className={classNames('eds-breadcrumbs', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <ol className=\"eds-breadcrumbs__list\">{_children}</ol>\n </nav>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type BreadcrumbItemOwnProps = {\n /** Komponenten som rendres\n * @default \"a\"\n */\n as?: 'a' | React.ElementType;\n /** Teksten som vises */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** @internal\n * Markerer aktivt element, i.e. siste element.\n * Settes automatisk av BreadcrumbNavigation og kan ikke overskrives */\n isCurrent?: boolean;\n};\n\nexport type BreadcrumbItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, BreadcrumbItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const BreadcrumbItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n className,\n isCurrent,\n as,\n ...rest\n}: BreadcrumbItemProps<E>): JSX.Element => {\n const Element: React.ElementType =\n as || (isCurrent ? 'span' : defaultElement);\n return (\n <li className={classNames('eds-breadcrumbs__item', className)}>\n <Element\n aria-current={isCurrent ? 'page' : undefined}\n className={classNames('eds-breadcrumbs__item__link', {\n 'eds-breadcrumbs__item__link--current': isCurrent,\n })}\n {...rest}\n />\n {!isCurrent && (\n <RightArrowIcon\n className=\"eds-breadcrumbs__separator\"\n inline\n role=\"presentation\"\n />\n )}\n </li>\n );\n};\n","import React from 'react';\nimport { SideNavigationProps } from './SideNavigation';\nimport { useControllableProp } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, MenuIcon } from '@entur/icons';\n\ntype CollapsibleSideNavigationProps = SideNavigationProps & {\n /**Tilstand til menyen\n * @default false\n */\n collapsed?: boolean;\n /** Kalles når menyen åpnes eller lukkes */\n onCollapseToggle?: (e: any) => void;\n /** Posisjonen til Collapsible-knappen, målt fra toppen (som CSS-enhet)\n * @default 50%\n */\n collapsibleButtonPosition?: string;\n /** Aria-label for knappen som åpner menyen\n * @default \"Åpne sidemeny\"\n */\n openSideMenuAriaLabel?: string;\n /** Aria-label for knappen som lukker menyen\n * @default \"Lukk sidemeny\"\n */\n closeSideMenuAriaLabel?: string;\n};\n\nexport const CollapsibleSideNavigation = ({\n className,\n children,\n size,\n collapsed: collapsible,\n onCollapseToggle,\n collapsibleButtonPosition = '50%',\n openSideMenuAriaLabel = 'Åpne sidemeny',\n closeSideMenuAriaLabel = 'Lukk sidemeny',\n ...rest\n}: CollapsibleSideNavigationProps) => {\n const [collapsedMenu, setCollapsedMenu] = useControllableProp({\n prop: collapsible,\n defaultValue: false,\n updater: onCollapseToggle,\n });\n\n return (\n <SideNavigationContext.Provider\n value={{\n isCollapsed: collapsedMenu,\n }}\n >\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n { 'eds-side-navigation--collapsed': collapsedMenu },\n className,\n )}\n {...rest}\n >\n {children}\n <button\n className=\"eds-side-navigation__collapse-button\"\n onClick={() => setCollapsedMenu(!collapsedMenu)}\n style={{ top: `${collapsibleButtonPosition}` }}\n >\n {collapsedMenu ? (\n <MenuIcon aria-label={openSideMenuAriaLabel} />\n ) : (\n <LeftArrowIcon aria-label={closeSideMenuAriaLabel} />\n )}\n </button>\n </ul>\n </SideNavigationContext.Provider>\n );\n};\n\nconst SideNavigationContext = React.createContext<{\n isCollapsed: boolean;\n}>({\n isCollapsed: false,\n});\n\nexport const useSideNavigationContext: () => { isCollapsed: boolean } = () => {\n const context = React.useContext(SideNavigationContext);\n if (!context) {\n console.error(\n 'Error reading SideNavigationContext. Please contact maintainer of @entur/menu',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport './Logo.scss';\n\nexport type LogoOwnProps = {\n /** Produktnavnet som vises etter Entur-logoen (f.eks. \"Tavla\", \"Partner\") */\n productName?: string;\n /** Størrelsen på logoen\n * @default 'medium'\n */\n size?: 'medium' | 'small';\n /** URL-en logoen lenker til. Gjør at komponenten rendres som en lenke */\n href?: string;\n /** HTML-elementet eller React-komponenten som brukes\n * @default 'div' (eller 'a' hvis href er satt)\n */\n as?: React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: never;\n};\n\nexport type LogoProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentPropsWithRef<T, LogoOwnProps>;\n\nexport type LogoComponent = <\n E extends React.ElementType = typeof defaultElement,\n>(\n props: LogoProps<E>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Logo: LogoComponent = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n productName,\n size = 'medium',\n href,\n as,\n className,\n ...rest\n }: LogoProps<E>,\n ref: PolymorphicRef<E>,\n ) => {\n const Element: React.ElementType = as || (href ? 'a' : defaultElement);\n\n return (\n <Element\n className={classNames('eds-logo', `eds-logo--${size}`, className)}\n ref={ref}\n href={typeof Element !== 'string' || Element === 'a' ? href : undefined}\n {...rest}\n >\n <EnturSvgLogo className=\"eds-logo__svg\" />\n {productName && (\n <span className=\"eds-logo__product-name\">{productName}</span>\n )}\n </Element>\n );\n },\n);\n\nconst EnturSvgLogo: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox=\"0 0 68.625 20.8254\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Entur\"\n focusable=\"false\"\n >\n {/* E */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"10.422 14.49 10.422 12.036 2.707 12.036 2.707 8.533 9.552 8.533 9.552 6.079 2.707 6.079 2.707 2.455 10.422 2.455 10.422 0 0 0 0 14.49\"\n />\n {/* n */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"13.495 0 13.205 0 13.205 14.49 15.912 14.49 15.912 5.881 25.212 14.49 25.502 14.49 25.502 0 22.794 0 22.794 8.77\"\n />\n {/* Red bar under EN */}\n <polygon\n className=\"eds-logo__entur-bar\"\n points=\"25.501 17.824 0 17.824 0 20.052 25.501 20.052\"\n />\n {/* T */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"32.607 8.532 32.607 20.567 35.313 20.567 35.313 8.532 39.354 8.532 39.354 6.077 28.546 6.077 28.546 8.532\"\n />\n {/* U */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M50.935 6.076v8.651c0 .726-.116 1.326-.348 1.802-.232.475-.519.85-.861 1.127-.341.278-.708.469-1.102.574-.392.107-.744.158-1.053.158-.309 0-.661-.051-1.054-.158-.393-.105-.76-.296-1.101-.574-.343-.277-.629-.652-.861-1.127-.232-.476-.348-1.076-.348-1.802v-8.651H41.5v8.651c0 .924.144 1.762.435 2.515.289.751.699 1.389 1.227 1.918.529.53 1.168.938 1.916 1.23.746.288 1.577.435 2.493.435.928 0 1.765-.147 2.513-.435.747-.292 1.384-.7 1.914-1.23.529-.529.935-1.167 1.218-1.918.284-.753.425-1.591.425-2.515v-8.651z\"\n />\n {/* R */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M56.734 6.076v14.49h2.708v-4.612h2.679l3.277 4.612h3.227l-3.524-4.869c.438-.12.843-.328 1.211-.624.368-.296.678-.65.93-1.059.252-.41.448-.869.59-1.376.142-.507.214-1.033.214-1.573 0-.726-.121-1.397-.36-2.01-.238-.614-.57-1.141-.997-1.583-.425-.442-.939-.784-1.54-1.028-.503-.247-1.165-.369-1.888-.369zm2.708 2.456h3.083c.501 0 .929.065 1.281.198.354.13.642.309.866.533.227.225.394.489.503.792.108.304.163.632.163.991 0 .303-.038.603-.116.899-.076.298-.22.566-.433.802-.211.239-.501.43-.866.574-.368.145-.832.218-1.398.218h-3.083z\"\n />\n </svg>\n);\n","import React, {\n cloneElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n FloatingList,\n autoUpdate,\n flip,\n offset,\n shift,\n useFloating,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react';\n\nimport { IconButton } from '@entur/button';\nimport { VerticalDotsIcon } from '@entur/icons';\nimport { Placement, standardisePlacement } from '@entur/tooltip';\nimport { space } from '@entur/tokens';\nimport {\n PolymorphicComponentProps,\n getNodeText,\n useOnClickOutside,\n useOnEscape,\n} from '@entur/utils';\n\nimport './OverflowMenu.scss';\n\nexport type OverflowMenuProps = {\n /** Menypunkter (OverflowMenuItem eller OverflowMenuLink) */\n children: React.ReactNode;\n buttonIcon?: React.ReactNode;\n /** Knapp som skal åpne OverflowMenu\n * @default IconButton med VerticalDotsIcon\n */\n button?: React.ReactElement;\n /** Ekstra klassenavn */\n className?: string;\n /** Posisjoneringen av OverflowMenu-lista\n * @default 'bottom-start'\n */\n placement?: Placement;\n /**\n * @deprecated Use placement insted.\n * This is done to standardise the name of\n * the relative position prop used in Entur\n * designs sytstem components\n */\n position?: 'right' | 'left';\n /** Tekst som beskriver knappen som åpner Overflow-menyen\n * @default \"åpne valgmeny\"\n */\n 'aria-label'?: string;\n};\n\ninterface SelectContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>['getItemProps'];\n closeMenuAndReturnFocus: () => void;\n}\n\nconst SelectContext = React.createContext<SelectContextValue>(\n {} as SelectContextValue,\n);\n\nexport const OverflowMenu = ({\n children,\n className,\n button,\n buttonIcon,\n placement = 'bottom-start',\n 'aria-label': ariaLabel = 'åpne valgmeny',\n ...rest\n}: OverflowMenuProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef([]);\n const labelsRef = useRef([]);\n\n const { refs, floatingStyles, context, elements, update } = useFloating({\n placement: standardisePlacement(\n // check for left is added for backwards compatibility\n rest.position === 'left' ? 'bottom-end' : placement,\n ),\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(space.extraSmall2),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (isOpen && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [isOpen, elements, update]);\n\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n });\n\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n activeIndex,\n onMatch: index => isOpen && setActiveIndex(index),\n });\n\n const role = useRole(context, { role: 'menu' });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [listNav, typeahead, role],\n );\n\n const closeMenuAndReturnFocus = () => {\n setIsOpen(false);\n // @ts-expect-error the reference element is actually focusable\n refs.reference.current?.focus?.();\n };\n\n useOnClickOutside([refs.floating, refs.reference], () => setIsOpen(false));\n useOnEscape(refs.floating, closeMenuAndReturnFocus);\n useOnEscape(refs.reference, closeMenuAndReturnFocus);\n\n const selectContext = React.useMemo(\n () => ({\n activeIndex,\n getItemProps,\n closeMenuAndReturnFocus,\n }),\n [activeIndex, getItemProps, closeMenuAndReturnFocus],\n );\n\n const _buttonIcon = buttonIcon ?? <VerticalDotsIcon />;\n\n return (\n <>\n {!button ? (\n <IconButton\n ref={refs.setReference}\n {...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n })}\n {...rest}\n >\n {_buttonIcon}\n </IconButton>\n ) : (\n cloneElement(button, {\n ref: refs.setReference,\n ...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n }),\n ...rest,\n })\n )}\n <SelectContext.Provider value={selectContext}>\n <div\n ref={refs.setFloating}\n style={{ ...floatingStyles, display: isOpen ? 'initial' : 'none' }}\n {...getFloatingProps({\n className: 'eds-overflow-menu__menu-list',\n })}\n >\n <FloatingList elementsRef={listRef} labelsRef={labelsRef}>\n {children}\n </FloatingList>\n </div>\n </SelectContext.Provider>\n </>\n );\n};\n\ntype OverflowMenuItemBaseProps = {\n /** Innholdet til OverflowMenuItem */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Det som skjer når elementet er valgt, enten ved museklikk eller Enter-klikk */\n onSelect?: () => void;\n /** Lenke til siden brukeren skal sendes til.\n * Obs: kun én av onSelect og href skal brukes på ett element\n */\n href?: string;\n /** Om dette valget skal være deaktivert */\n disabled?: boolean;\n};\n\nexport type OverflowMenuItemProps<C extends React.ElementType> =\n PolymorphicComponentProps<C, OverflowMenuItemBaseProps>;\n\nexport const OverflowMenuItem = <C extends React.ElementType = 'button'>({\n children,\n className,\n onSelect = () => undefined,\n href,\n disabled,\n as,\n ...rest\n}: OverflowMenuItemProps<C>) => {\n const { activeIndex, getItemProps, closeMenuAndReturnFocus } =\n useContext(SelectContext);\n const { ref: listItemRef, index } = useListItem({\n label: !disabled ? getNodeText(children) : null,\n });\n\n const isHighlighted = activeIndex === index;\n const isLink = href !== undefined;\n\n const Element = as ?? (isLink ? 'a' : 'button');\n\n return (\n <Element\n ref={listItemRef}\n className={classNames(\n 'eds-overflow-menu__item',\n {\n 'eds-overflow-menu__item--disabled': disabled,\n 'eds-overflow-menu__item--highlighted': isHighlighted,\n },\n className,\n )}\n role=\"menuitem\"\n type={Element === 'button' ? 'button' : undefined}\n aria-disabled={disabled}\n aria-selected={isHighlighted}\n {...getItemProps({\n onClick:\n isLink || disabled\n ? undefined\n : () => {\n onSelect();\n closeMenuAndReturnFocus();\n },\n href: disabled ? undefined : href,\n tabIndex: isHighlighted ? 0 : -1,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n\ntype OverflowMenuLinkExtendedBaseProps = {\n /**\n * @deprecated onSelect is no longer used\n * in OverflowMenuLink, use 'href' instead */\n onSelect?: () => void;\n};\n\nexport const OverflowMenuLink = <C extends React.ElementType = 'a'>(\n props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps,\n) => {\n return <OverflowMenuItem {...props} />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type PaginationPageProps = {\n /** Sidenummeret som er aktivt nå */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Viser siden som aktiv */\n selected?: boolean;\n /** Viser knappen som inaktiv */\n disabled?: boolean;\n /** Callback for når man trykker på siden */\n onClick: () => void;\n /** Tekst for skjermlesere */\n 'aria-label': string;\n 'aria-describedby'?: string;\n};\nexport const PaginationPage = ({\n children,\n className,\n selected,\n disabled,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n}: PaginationPageProps) => (\n <button\n className={classNames(\n 'eds-pagination__controls__page',\n { 'eds-pagination__controls__page--selected': selected },\n { 'eds-pagination__controls__page--disabled': disabled },\n className,\n )}\n disabled={selected || disabled}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-current={selected ? 'page' : false}\n >\n {children}\n </button>\n);\n","import React from 'react';\n\nexport type PaginationInputProps = {\n currentPage: number;\n label?: string;\n onPageChange: (pageNumber: number) => void;\n pageCount: number;\n};\n\nexport const PaginationInput = ({\n currentPage,\n pageCount,\n label = 'Gå til side',\n onPageChange,\n}: PaginationInputProps) => {\n const [input, setInput] = React.useState(String(currentPage));\n // If the currentPage prop changes, we want to reset the input field\n React.useEffect(() => {\n setInput(String(currentPage));\n }, [currentPage]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n let pageNumber = Number(input);\n if (pageNumber === currentPage) {\n return;\n }\n if (Number.isNaN(pageNumber)) {\n pageNumber = currentPage;\n setInput(String(currentPage));\n return;\n }\n if (pageNumber > pageCount) {\n pageNumber = pageCount;\n setInput(String(pageCount));\n } else if (pageNumber < 1) {\n pageNumber = 1;\n setInput(String(1));\n }\n onPageChange(pageNumber);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInput(e.target.value);\n };\n\n return (\n <form onSubmit={handleSubmit} noValidate aria-label=\"form\">\n <label className=\"eds-pagination__controls__input__wrapper\">\n <span className=\"eds-pagination__controls__input__label\">{label}</span>\n <input\n type=\"number\"\n max={pageCount}\n className=\"eds-pagination__controls__input__field\"\n value={input}\n onChange={handleChange}\n />\n </label>\n </form>\n );\n};\n","import { useEffect, useId, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { Label } from '@entur/typography';\n\nimport { PaginationPage } from './PaginationPage';\nimport { PaginationInput } from './PaginationInput';\nimport { OverflowMenu, OverflowMenuItem } from './OverflowMenu';\n\nimport './Pagination.scss';\n\nexport type PaginationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Sidenummeret som er aktivt nå (1-indeksert) */\n currentPage: number;\n /** Callback for når man ønsker å gå til en ny side */\n onPageChange: (requestedPage: number) => void;\n /** Antall sider totalt */\n pageCount: number;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default \"Gå til forrige side\"\n */\n previousPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"neste side knappen\"\n * @default \"Gå til neste side\"\n */\n nextPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default pageNumber => `Gå til side ${pageNumber}`,\n */\n pageLabel?: (pageNumber: number) => string;\n /**\n * @default \"Nåværende side:\"\n */\n currentPageLabelForScreenreader?: string;\n /** Vis et felt til høyre for pagineringen hvor man kan angi siden man\n * ønsker å vise i et tekstfelt.\n *\n * @default false\n */\n showInput?: boolean;\n /** Label som vises til venstre for input-feltet som vises om `showInput` er true\n * @default \"Gå til side\"\n */\n inputLabel?: string;\n\n /** Hvor mange resultater man har totalt */\n numberOfResults?: number;\n /** Hvor mange resultater som vises per side */\n resultsPerPage?: number;\n /**\n * @default [10,25,50]\n */\n resultsPerPageOptions?: number[];\n /** Callback for når resultater per side oppdateres */\n onResultsPerPageChange?: (e: number) => void;\n /** Brukes for å skjule \"neste side\"-knappen\n * @default false\n */\n hideNextButton?: boolean;\n /** Brukes for å skjule \"forrige side\"-knappen\n * @default false\n */\n hidePrevButton?: boolean;\n /** Teksten som vises for hvilke resultater av sideantallet man viser.\n * @default `Viser resultat ${minPage} - ${maxPage} av ${pageCount}`\n */\n showingResultsLabel?: (\n minPage: number,\n maxPage: number,\n pageCount: number,\n ) => string;\n /** Teksten som vises før \"resultsPerPage\"-velgeren\n * @default \"Vis\"\n */\n showNumberOfResultsLabel?: string;\n [key: string]: any;\n};\n\nexport const Pagination = ({\n className,\n currentPage,\n inputLabel,\n onPageChange,\n pageCount,\n pageLabel = pageNumber => `Gå til side ${pageNumber}`,\n previousPageLabel = 'Gå til forrige side',\n currentPageLabelForScreenreader = 'Nåværende side:',\n lastPageLabelForScreenreader = ', siste side',\n showInput,\n\n numberOfResults,\n resultsPerPage,\n resultsPerPageOptions = [10, 25, 50],\n onResultsPerPageChange,\n\n showNumberOfResultsLabel = 'Vis',\n nextPageLabel = 'Gå til neste side',\n showingResultsLabel = (minPage, maxPage, pageCount) =>\n `Viser resultat ${minPage}–${maxPage} av ${pageCount}`,\n changeNumberOfResultsLabelForScreenreader = `Viser ${resultsPerPage} resultater. Trykk for å endre antall. Åpner en flervalgsmeny.`,\n hideNextButton = false,\n hidePrevButton = false,\n ...rest\n}: PaginationProps) => {\n const [listedEntries, setListedEntries] = useState<Array<number | '…'>>([]);\n const paginationId = `eds-pagination${useId()}`;\n\n const isFirstPostSelected = currentPage === 1;\n const isLastPostSelected = currentPage === pageCount;\n const noEllipsis = pageCount <= 7;\n const onlyLeadingEllipsis = !noEllipsis && currentPage < 5;\n const onlyTrailingEllipsis = !noEllipsis && pageCount - currentPage <= 3;\n\n useEffect(() => {\n if (pageCount < 1) return;\n if (noEllipsis) {\n setListedEntries(\n Array(pageCount)\n .fill(null)\n .map((_, i) => i + 1),\n );\n } else if (onlyLeadingEllipsis) {\n setListedEntries([1, 2, 3, 4, 5, '…', pageCount]);\n } else if (onlyTrailingEllipsis) {\n setListedEntries([\n 1,\n '…',\n pageCount - 4,\n pageCount - 3,\n pageCount - 2,\n pageCount - 1,\n pageCount,\n ]);\n } else {\n // leading and trailing ellipsis\n setListedEntries([\n 1,\n '…',\n currentPage - 1,\n currentPage,\n currentPage + 1,\n '…',\n pageCount,\n ]);\n }\n }, [\n noEllipsis,\n onlyLeadingEllipsis,\n onlyTrailingEllipsis,\n currentPage,\n pageCount,\n ]);\n\n if (pageCount < 1) {\n return null;\n }\n\n return (\n <nav\n className={classNames('eds-pagination', className)}\n aria-label=\"Paginering\"\n {...rest}\n >\n {resultsPerPage && numberOfResults && (\n <div className=\"eds-pagination__results\">\n {onResultsPerPageChange && (\n <>\n <Label as=\"p\" aria-hidden=\"true\">\n {showNumberOfResultsLabel}\n </Label>\n <OverflowMenu\n className=\"eds-pagination__results__change-number-of-results\"\n buttonIcon={\n <span className=\"eds-pagination__results__change-number-of-results__content\">\n {resultsPerPage}{' '}\n <DownArrowIcon\n className=\"eds-pagination__results__change-number-of-results__content__arrow\"\n aria-hidden=\"true\"\n />\n </span>\n }\n aria-label={changeNumberOfResultsLabelForScreenreader}\n placement=\"bottom-end\"\n >\n {resultsPerPageOptions.map((option: number, key: number) => (\n <OverflowMenuItem\n key={key}\n onSelect={() => onResultsPerPageChange(option)}\n >\n {option}\n </OverflowMenuItem>\n ))}\n </OverflowMenu>\n </>\n )}\n <Label as=\"p\">\n {showingResultsLabel(\n (currentPage - 1) * resultsPerPage + 1,\n currentPage * resultsPerPage > numberOfResults\n ? numberOfResults\n : currentPage * resultsPerPage,\n numberOfResults,\n )}\n </Label>\n </div>\n )}\n <div className=\"eds-pagination__controls\">\n {!hidePrevButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage - 1)}\n aria-label={previousPageLabel}\n aria-describedby={paginationId}\n disabled={isFirstPostSelected}\n >\n <LeftArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {listedEntries.map((entry, index) =>\n entry === '…' ? (\n <Ellipsis key={`ellipsis-${index}`} />\n ) : (\n <PaginationPage\n selected={entry === currentPage}\n onClick={() => onPageChange(entry)}\n aria-label={`${pageLabel(entry)}${\n entry === pageCount ? lastPageLabelForScreenreader : ''\n }`}\n aria-describedby={\n entry !== currentPage ? paginationId : undefined\n }\n key={entry}\n >\n {entry}\n </PaginationPage>\n ),\n )}\n {!hideNextButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage + 1)}\n aria-label={nextPageLabel}\n aria-describedby={paginationId}\n disabled={isLastPostSelected}\n >\n <RightArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {showInput && (\n <PaginationInput\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={onPageChange}\n label={inputLabel}\n />\n )}\n </div>\n <VisuallyHidden id={paginationId}>\n {currentPageLabelForScreenreader} {currentPage}\n </VisuallyHidden>\n </nav>\n );\n};\n\nconst Ellipsis = () => (\n <span className=\"eds-pagination__controls__page__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './SideNavigation.scss';\n\nexport type SideNavigationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse på menyen\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\nconst SideNavigationBase = ({\n className,\n children,\n size = 'medium',\n ...rest\n}: SideNavigationProps) => {\n if (!children || !React.Children.count(children)) {\n return null;\n }\n return (\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\nexport const SideNavigation = Object.assign(SideNavigationBase, {\n __IS_ENTUR_MENU__: true as const,\n});\n","import { useEffect, useState } from 'react';\n\nexport const useShowDelayedLabel = (isCollapsed: boolean): [boolean] => {\n const [showLabel, setShowLabel] = useState(true);\n const hideDelay = 50;\n const showDelay = 200;\n useEffect(() => {\n if (isCollapsed) {\n setTimeout(() => {\n setShowLabel(false);\n }, hideDelay);\n }\n if (!isCollapsed) {\n setTimeout(() => {\n setShowLabel(true);\n }, showDelay);\n }\n return () => undefined;\n }, [isCollapsed]);\n return [showLabel];\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nfunction isActiveRecursively(child: any): boolean {\n if (!child.props) {\n return false;\n }\n if (child.props.active) {\n return true;\n }\n if (!child.props.children) {\n return false;\n }\n\n return React.Children.toArray(child.props.children).some(child =>\n isActiveRecursively(child),\n );\n}\n\ntype BaseSideNavigationItemOwnProps = {\n active?: boolean;\n as?: 'a' | 'button' | React.ElementType;\n className?: string;\n icon?: React.ReactNode;\n children: React.ReactNode;\n subMenu?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type BaseSideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementBaseItem,\n> = PolymorphicComponentProps<T, BaseSideNavigationItemOwnProps>;\n\nconst defaultElementBaseItem = 'a';\n\nconst BaseSideNavigationItem: <\n E extends React.ElementType = typeof defaultElementBaseItem,\n>(\n props: BaseSideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementBaseItem>(\n {\n className,\n active = false,\n subMenu,\n icon,\n children,\n as,\n ...rest\n }: BaseSideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementBaseItem;\n const { isCollapsed } = useSideNavigationContext();\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n return (\n <li className={classNames('eds-side-navigation__item', className)}>\n <Element\n className={classNames('eds-side-navigation__click-target', {\n 'eds-side-navigation__click-target--active': active,\n })}\n aria-label={isCollapsed ? children : undefined}\n aria-current={active ? 'page' : undefined}\n ref={ref}\n {...rest}\n >\n {icon}\n {showLabel && children}\n </Element>\n {subMenu}\n </li>\n );\n },\n);\n\ntype DisabledSideNavigationItemProps = {\n children: React.ReactNode;\n [key: string]: any;\n};\nconst DisabledSideNavigationItem = React.forwardRef<\n HTMLButtonElement,\n DisabledSideNavigationItemProps\n>(({ children, ...rest }, ref: React.Ref<HTMLButtonElement>) => (\n <BaseSideNavigationItem\n as=\"button\"\n disabled={true}\n aria-disabled={true}\n ref={ref}\n type=\"button\"\n {...rest}\n >\n {children}\n </BaseSideNavigationItem>\n));\n\nexport type SideNavigationItemOwnProps = {\n /** Om meny-elementet er det som er aktivt */\n active?: boolean;\n /** HTML-elementet eller React-komponenten som rendres */\n as?: 'a' | 'button' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Om meny-elementet er deaktivert */\n disabled?: boolean;\n /** Callback for når man klikker på meny-elementet */\n onClick?: (e: React.MouseEvent) => any;\n /** Sett til true om du vil tvinge alle sub-menus til å rendre barna sine. Typisk for å vise søkeresultater */\n forceExpandSubMenus?: boolean;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type SideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementItem,\n> = PolymorphicComponentProps<T, SideNavigationItemOwnProps>;\n\nconst defaultElementItem = 'a';\n\nexport const SideNavigationItem: <\n E extends React.ElementType = typeof defaultElementItem,\n>(\n props: SideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementItem>(\n {\n active,\n disabled,\n children,\n forceExpandSubMenus,\n as,\n ...rest\n }: SideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementItem;\n const childrenArray = React.Children.toArray(children);\n const subMenu = childrenArray.find(\n (child: any) => child && child.type && child.type.__IS_ENTUR_MENU__,\n );\n const label = subMenu\n ? childrenArray.filter(child => child !== subMenu)\n : children;\n\n if (disabled) {\n return (\n <DisabledSideNavigationItem ref={ref} {...rest}>\n {label}\n </DisabledSideNavigationItem>\n );\n }\n\n if (!subMenu) {\n return (\n <BaseSideNavigationItem\n as={Element}\n active={active}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n }\n\n const isExpanded =\n forceExpandSubMenus ||\n isActiveRecursively({ props: { children, active } });\n\n return (\n <BaseSideNavigationItem\n active={active}\n subMenu={isExpanded && subMenu}\n aria-expanded={isExpanded}\n as={Element}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseExpand, ExpandArrow } from '@entur/expand';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { useControllableProp } from '@entur/utils';\n\nexport type SideNavigationGroupProps = {\n /** Skal menygruppen være ekspandert by default? Kun relevant om komponenten ikke er kontrollert\n * @default false\n */\n defaultOpen?: boolean;\n /** Er menyen åpen? */\n open?: boolean;\n /** Kalles når menygruppen åpnes eller lukkes */\n onToggle?: (e?: boolean) => void;\n /** Ekstra klassenavn */\n className?: string;\n /** Menyen som skal grupperes */\n children: React.ReactNode;\n /** Overskriften til menyen */\n title: React.ReactNode;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const SideNavigationGroup = ({\n defaultOpen = false,\n open,\n onToggle,\n className,\n children,\n title,\n icon,\n ...rest\n}: SideNavigationGroupProps) => {\n const [isOpen, setOpen] = useControllableProp({\n prop: open,\n updater: onToggle,\n defaultValue: defaultOpen,\n });\n const { isCollapsed } = useSideNavigationContext();\n\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n\n return (\n <div\n className={classNames('eds-side-navigation-group', className)}\n {...rest}\n >\n <button\n onClick={() => setOpen(!isOpen)}\n type=\"button\"\n className=\"eds-side-navigation-group__trigger\"\n aria-label={`${title}, utvidbar meny, ${isOpen ? 'åpen' : 'lukket'}`}\n >\n <span>\n {icon && (\n <span className=\"eds-side-navigation-group__trigger-icon\">\n {icon}\n </span>\n )}\n {showLabel && title}\n </span>\n {showLabel && (\n <ExpandArrow\n open={isOpen}\n className=\"eds-side-navigation-group__expand-icon\"\n />\n )}\n </button>\n <BaseExpand\n className=\"eds-side-navigation-group__expand-content\"\n open={isOpen}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import classNames from 'classnames';\n\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport './Stepper.scss';\n\nexport type StepperProps = {\n /** Liste med steg-navn i rekkefølge. */\n steps: string[];\n /** Det nåværende steget. 0-indeksert */\n activeIndex: number;\n /** Om stepperen skal være et interaktivt-navigasjonselement eller ikke\n * @default false\n */\n interactive?: boolean;\n /** Kalles med indeksen til det klikkede steget.\n * Fungerer kun hvis Stepper-en er interaktiv */\n onStepClick?: (index: number) => void;\n /** Om stepper skal vise indeksering av hvilket trinn man er på\n * @default true\n */\n showStepperIndex?: boolean;\n /** Ekstra klassenavn. */\n className?: string;\n /** Skjermlesertekst for ordet 'steg' som i '_steg_ 1 av 3'\n * @default 'Steg'\n */\n ariaLabelStep?: string;\n /** Skjermlesertekst for ordet 'av' som i 'steg 1 _av_ 3'\n * @defaul 'av'\n */\n ariaLabelOf?: string;\n /** Skjermlesertekst for ordet fullført\n * @default 'fullført'\n */\n ariaLabelCompleted?: string;\n /** Skjermlesertekst for oppsummering av hele stepper-en\n * @default `Stegindikator med ${steps.length} steg, du er på steg ${activeIndex + 1} ${steps[activeIndex]},`\n */\n ariaLabelSummary?: string;\n [key: string]: any;\n};\n\nexport const Stepper = ({\n activeIndex,\n className,\n interactive = false,\n onStepClick,\n showStepperIndex = true,\n steps,\n ariaLabelStep = 'Steg',\n ariaLabelOf = 'av',\n ariaLabelCompleted = 'fullført',\n ariaLabelSummary = `Stegindikator med ${steps.length} steg, du er på steg ${\n activeIndex + 1\n } ${steps[activeIndex]},`,\n ...rest\n}: StepperProps) => {\n return (\n <ol\n className={classNames('eds-stepper', className)}\n aria-label={ariaLabelSummary}\n {...rest}\n >\n {steps.map((step, i) => {\n const isCurrent = i === activeIndex;\n const isInteractive = interactive && activeIndex > i;\n const Element = isInteractive ? 'button' : 'div';\n const isCompleted = activeIndex > i;\n const currentStepSummary = `${ariaLabelStep} ${i + 1} ${ariaLabelOf} ${\n steps.length\n }, ${step} ${isCompleted ? `, ${ariaLabelCompleted}` : ''}`;\n const props = isInteractive ? { onClick: () => onStepClick?.(i) } : {};\n\n return (\n <li key={step} className=\"eds-stepper__step__wrapper\">\n <Element\n className={classNames(\n 'eds-stepper__step',\n { 'eds-stepper__step--active': isCurrent },\n { 'eds-stepper__step--completed': isCompleted },\n { 'eds-stepper__step--interactive': isInteractive },\n )}\n aria-current={isCurrent ? 'step' : undefined}\n type={Element === 'button' ? 'button' : undefined}\n {...props}\n >\n <div className=\"eds-stepper__step__line\" aria-hidden={true} />\n <span className=\"eds-stepper__step__label\" aria-hidden={true}>\n {showStepperIndex && i + 1 + '.'} {step}\n </span>\n <VisuallyHidden>{currentStepSummary}</VisuallyHidden>\n </Element>\n </li>\n );\n })}\n </ol>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './TopNavigationItem.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TopNavigationItemOwnProps = {\n /** Om komponenten vises som valgt eller ikke\n * @default false\n */\n active?: boolean;\n /** Tekste som vises */\n children: React.ReactNode;\n /** HTML-elementet eller React-komponenten som lager komponenten\n * @default 'a'\n */\n as?: 'a' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type TopNavigationItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, TopNavigationItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const TopNavigationItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n active = false,\n className,\n as,\n ...rest\n}: TopNavigationItemProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n return (\n <Element\n className={classNames([\n 'eds-top-navigation-item',\n className,\n { 'eds-top-navigation-item--active': active },\n ])}\n {...rest}\n />\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles(\n 'menu',\n 'expand',\n 'icons',\n 'typography',\n 'button',\n 'layout',\n 'a11y',\n);\n\nexport * from './BreadcrumbNavigation';\nexport * from './BreadcrumbItem';\nexport * from './CollapsibleSideNavigation';\nexport * from './Logo';\nexport * from './OverflowMenu';\nexport * from './Pagination';\nexport * from './SideNavigation';\nexport * from './SideNavigationItem';\nexport * from './SideNavigationGroup';\nexport * from './Stepper';\nexport * from './TopNavigationItem';\n"],"names":["jsx","defaultElement","RightArrowIcon","useControllableProp","jsxs","MenuIcon","LeftArrowIcon","button","useState","useRef","useFloating","standardisePlacement","offset","space","flip","shift","useEffect","autoUpdate","useListNavigation","useTypeahead","useRole","useInteractions","useOnClickOutside","useOnEscape","VerticalDotsIcon","Fragment","IconButton","cloneElement","FloatingList","useContext","useListItem","getNodeText","pageCount","useId","Label","DownArrowIcon","VisuallyHidden","child","ExpandArrow","BaseExpand","warnAboutMissingStyles"],"mappings":"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"}
package/dist/menu.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- import { useControllableProp, useOnClickOutside, useOnEscape, getNodeText, useRandomId, warnAboutMissingStyles } from "@entur/utils";
1
+ import { useControllableProp, useOnClickOutside, useOnEscape, getNodeText, warnAboutMissingStyles } from "@entur/utils";
2
2
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
- import React, { useState, useRef, useEffect, cloneElement, useContext } from "react";
3
+ import React, { useState, useRef, useEffect, cloneElement, useContext, useId } from "react";
4
4
  import classNames from "classnames";
5
5
  import { RightArrowIcon, MenuIcon, LeftArrowIcon, VerticalDotsIcon, DownArrowIcon } from "@entur/icons";
6
6
  import { useFloating, offset, flip, shift, autoUpdate, useListNavigation, useTypeahead, useRole, useInteractions, FloatingList, useListItem } from "@floating-ui/react";
@@ -147,30 +147,21 @@ const Logo = React.forwardRef(
147
147
  href: typeof Element !== "string" || Element === "a" ? href : void 0,
148
148
  ...rest,
149
149
  children: [
150
- /* @__PURE__ */ jsx(
151
- EnturSvgLogo,
152
- {
153
- className: "eds-logo__svg",
154
- label: productName ? `Entur ${productName} logo` : "Entur logo"
155
- }
156
- ),
157
- productName && /* @__PURE__ */ jsx("span", { className: "eds-logo__product-name", "aria-hidden": "true", children: productName })
150
+ /* @__PURE__ */ jsx(EnturSvgLogo, { className: "eds-logo__svg" }),
151
+ productName && /* @__PURE__ */ jsx("span", { className: "eds-logo__product-name", children: productName })
158
152
  ]
159
153
  }
160
154
  );
161
155
  }
162
156
  );
163
- const EnturSvgLogo = ({
164
- className,
165
- label
166
- }) => /* @__PURE__ */ jsxs(
157
+ const EnturSvgLogo = ({ className }) => /* @__PURE__ */ jsxs(
167
158
  "svg",
168
159
  {
169
160
  className,
170
161
  viewBox: "0 0 68.625 20.8254",
171
162
  xmlns: "http://www.w3.org/2000/svg",
172
163
  role: "img",
173
- "aria-label": label,
164
+ "aria-label": "Entur",
174
165
  focusable: "false",
175
166
  children: [
176
167
  /* @__PURE__ */ jsx(
@@ -466,7 +457,7 @@ const Pagination = ({
466
457
  ...rest
467
458
  }) => {
468
459
  const [listedEntries, setListedEntries] = useState([]);
469
- const paginationId = useRandomId("eds-pagination");
460
+ const paginationId = `eds-pagination${useId()}`;
470
461
  const isFirstPostSelected = currentPage === 1;
471
462
  const isLastPostSelected = currentPage === pageCount;
472
463
  const noEllipsis = pageCount <= 7;
@@ -609,7 +600,7 @@ const Pagination = ({
609
600
  );
610
601
  };
611
602
  const Ellipsis = () => /* @__PURE__ */ jsx("span", { className: "eds-pagination__controls__page__ellipsis", "aria-hidden": "true", children: "…" });
612
- const SideNavigation = ({
603
+ const SideNavigationBase = ({
613
604
  className,
614
605
  children,
615
606
  size = "medium",
@@ -631,7 +622,9 @@ const SideNavigation = ({
631
622
  }
632
623
  );
633
624
  };
634
- SideNavigation.__IS_ENTUR_MENU__ = true;
625
+ const SideNavigation = Object.assign(SideNavigationBase, {
626
+ __IS_ENTUR_MENU__: true
627
+ });
635
628
  const useShowDelayedLabel = (isCollapsed) => {
636
629
  const [showLabel, setShowLabel] = useState(true);
637
630
  const hideDelay = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"menu.esm.js","sources":["../src/BreadcrumbNavigation.tsx","../src/BreadcrumbItem.tsx","../src/CollapsibleSideNavigation.tsx","../src/Logo.tsx","../src/OverflowMenu.tsx","../src/PaginationPage.tsx","../src/PaginationInput.tsx","../src/Pagination.tsx","../src/SideNavigation.tsx","../src/useShowDelayedLabel.ts","../src/SideNavigationItem.tsx","../src/SideNavigationGroup.tsx","../src/Stepper.tsx","../src/TopNavigationItem.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nimport './BreadcrumbNavigation.scss';\n\nexport type BreadcrumbNavigationProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n 'aria-label' | 'children'\n> & {\n /** Label for brødsmulestien.\n * @default 'Brødsmulesti'\n */\n 'aria-label'?: string;\n /** En liste med BreadcrumbItem-er */\n children: React.ReactNode;\n};\n\nexport const BreadcrumbNavigation: React.FC<BreadcrumbNavigationProps> = ({\n 'aria-label': ariaLabel = 'Brødsmulesti',\n className,\n children,\n ...rest\n}) => {\n const childrenArray = React.Children.toArray(children);\n\n const _children = childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n if (process.env.NODE_ENV !== 'production')\n console.warn('Received a non-element child, it will be ignored.');\n\n return null;\n }\n\n const element = child as React.ReactElement<any>;\n return React.cloneElement(element, {\n isCurrent: index + 1 === childrenArray.length,\n });\n });\n\n return (\n <nav\n className={classNames('eds-breadcrumbs', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <ol className=\"eds-breadcrumbs__list\">{_children}</ol>\n </nav>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type BreadcrumbItemOwnProps = {\n /** Komponenten som rendres\n * @default \"a\"\n */\n as?: 'a' | React.ElementType;\n /** Teksten som vises */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** @internal\n * Markerer aktivt element, i.e. siste element.\n * Settes automatisk av BreadcrumbNavigation og kan ikke overskrives */\n isCurrent?: boolean;\n};\n\nexport type BreadcrumbItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, BreadcrumbItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const BreadcrumbItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n className,\n isCurrent,\n as,\n ...rest\n}: BreadcrumbItemProps<E>): JSX.Element => {\n const Element: React.ElementType =\n as || (isCurrent ? 'span' : defaultElement);\n return (\n <li className={classNames('eds-breadcrumbs__item', className)}>\n <Element\n aria-current={isCurrent ? 'page' : undefined}\n className={classNames('eds-breadcrumbs__item__link', {\n 'eds-breadcrumbs__item__link--current': isCurrent,\n })}\n {...rest}\n />\n {!isCurrent && (\n <RightArrowIcon\n className=\"eds-breadcrumbs__separator\"\n inline\n role=\"presentation\"\n />\n )}\n </li>\n );\n};\n","import React from 'react';\nimport { SideNavigationProps } from './SideNavigation';\nimport { useControllableProp } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, MenuIcon } from '@entur/icons';\n\ntype CollapsibleSideNavigationProps = SideNavigationProps & {\n /**Tilstand til menyen\n * @default false\n */\n collapsed?: boolean;\n /** Kalles når menyen åpnes eller lukkes */\n onCollapseToggle?: (e: any) => void;\n /** Posisjonen til Collapsible-knappen, målt fra toppen (som CSS-enhet)\n * @default 50%\n */\n collapsibleButtonPosition?: string;\n /** Aria-label for knappen som åpner menyen\n * @default \"Åpne sidemeny\"\n */\n openSideMenuAriaLabel?: string;\n /** Aria-label for knappen som lukker menyen\n * @default \"Lukk sidemeny\"\n */\n closeSideMenuAriaLabel?: string;\n};\n\nexport const CollapsibleSideNavigation: React.FC<\n CollapsibleSideNavigationProps\n> = ({\n className,\n children,\n size,\n collapsed: collapsible,\n onCollapseToggle,\n collapsibleButtonPosition = '50%',\n openSideMenuAriaLabel = 'Åpne sidemeny',\n closeSideMenuAriaLabel = 'Lukk sidemeny',\n ...rest\n}) => {\n const [collapsedMenu, setCollapsedMenu] = useControllableProp({\n prop: collapsible,\n defaultValue: false,\n updater: onCollapseToggle,\n });\n\n return (\n <SideNavigationContext.Provider\n value={{\n isCollapsed: collapsedMenu,\n }}\n >\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n { 'eds-side-navigation--collapsed': collapsedMenu },\n className,\n )}\n {...rest}\n >\n {children}\n <button\n className=\"eds-side-navigation__collapse-button\"\n onClick={() => setCollapsedMenu(!collapsedMenu)}\n style={{ top: `${collapsibleButtonPosition}` }}\n >\n {collapsedMenu ? (\n <MenuIcon aria-label={openSideMenuAriaLabel} />\n ) : (\n <LeftArrowIcon aria-label={closeSideMenuAriaLabel} />\n )}\n </button>\n </ul>\n </SideNavigationContext.Provider>\n );\n};\n\nconst SideNavigationContext = React.createContext<{\n isCollapsed: boolean;\n}>({\n isCollapsed: false,\n});\n\nexport const useSideNavigationContext: () => { isCollapsed: boolean } = () => {\n const context = React.useContext(SideNavigationContext);\n if (!context) {\n console.error(\n 'Error reading SideNavigationContext. Please contact maintainer of @entur/menu',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport './Logo.scss';\n\nexport type LogoOwnProps = {\n /** Produktnavnet som vises etter Entur-logoen (f.eks. \"Tavla\", \"Partner\") */\n productName?: string;\n /** Størrelsen på logoen\n * @default 'medium'\n */\n size?: 'medium' | 'small';\n /** URL-en logoen lenker til. Gjør at komponenten rendres som en lenke */\n href?: string;\n /** HTML-elementet eller React-komponenten som brukes\n * @default 'div' (eller 'a' hvis href er satt)\n */\n as?: React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: never;\n};\n\nexport type LogoProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentPropsWithRef<T, LogoOwnProps>;\n\nexport type LogoComponent = <\n E extends React.ElementType = typeof defaultElement,\n>(\n props: LogoProps<E>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Logo: LogoComponent = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n productName,\n size = 'medium',\n href,\n as,\n className,\n ...rest\n }: LogoProps<E>,\n ref: PolymorphicRef<E>,\n ) => {\n const Element: React.ElementType = as || (href ? 'a' : defaultElement);\n\n return (\n <Element\n className={classNames('eds-logo', `eds-logo--${size}`, className)}\n ref={ref}\n href={typeof Element !== 'string' || Element === 'a' ? href : undefined}\n {...rest}\n >\n <EnturSvgLogo\n className=\"eds-logo__svg\"\n label={productName ? `Entur ${productName} logo` : 'Entur logo'}\n />\n {productName && (\n <span className=\"eds-logo__product-name\" aria-hidden=\"true\">\n {productName}\n </span>\n )}\n </Element>\n );\n },\n);\n\nconst EnturSvgLogo: React.FC<{ className?: string; label: string }> = ({\n className,\n label,\n}) => (\n <svg\n className={className}\n viewBox=\"0 0 68.625 20.8254\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label={label}\n focusable=\"false\"\n >\n {/* E */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"10.422 14.49 10.422 12.036 2.707 12.036 2.707 8.533 9.552 8.533 9.552 6.079 2.707 6.079 2.707 2.455 10.422 2.455 10.422 0 0 0 0 14.49\"\n />\n {/* n */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"13.495 0 13.205 0 13.205 14.49 15.912 14.49 15.912 5.881 25.212 14.49 25.502 14.49 25.502 0 22.794 0 22.794 8.77\"\n />\n {/* Red bar under EN */}\n <polygon\n className=\"eds-logo__entur-bar\"\n points=\"25.501 17.824 0 17.824 0 20.052 25.501 20.052\"\n />\n {/* T */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"32.607 8.532 32.607 20.567 35.313 20.567 35.313 8.532 39.354 8.532 39.354 6.077 28.546 6.077 28.546 8.532\"\n />\n {/* U */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M50.935 6.076v8.651c0 .726-.116 1.326-.348 1.802-.232.475-.519.85-.861 1.127-.341.278-.708.469-1.102.574-.392.107-.744.158-1.053.158-.309 0-.661-.051-1.054-.158-.393-.105-.76-.296-1.101-.574-.343-.277-.629-.652-.861-1.127-.232-.476-.348-1.076-.348-1.802v-8.651H41.5v8.651c0 .924.144 1.762.435 2.515.289.751.699 1.389 1.227 1.918.529.53 1.168.938 1.916 1.23.746.288 1.577.435 2.493.435.928 0 1.765-.147 2.513-.435.747-.292 1.384-.7 1.914-1.23.529-.529.935-1.167 1.218-1.918.284-.753.425-1.591.425-2.515v-8.651z\"\n />\n {/* R */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M56.734 6.076v14.49h2.708v-4.612h2.679l3.277 4.612h3.227l-3.524-4.869c.438-.12.843-.328 1.211-.624.368-.296.678-.65.93-1.059.252-.41.448-.869.59-1.376.142-.507.214-1.033.214-1.573 0-.726-.121-1.397-.36-2.01-.238-.614-.57-1.141-.997-1.583-.425-.442-.939-.784-1.54-1.028-.503-.247-1.165-.369-1.888-.369zm2.708 2.456h3.083c.501 0 .929.065 1.281.198.354.13.642.309.866.533.227.225.394.489.503.792.108.304.163.632.163.991 0 .303-.038.603-.116.899-.076.298-.22.566-.433.802-.211.239-.501.43-.866.574-.368.145-.832.218-1.398.218h-3.083z\"\n />\n </svg>\n);\n","import React, {\n cloneElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n FloatingList,\n autoUpdate,\n flip,\n offset,\n shift,\n useFloating,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react';\n\nimport { IconButton } from '@entur/button';\nimport { VerticalDotsIcon } from '@entur/icons';\nimport { Placement, standardisePlacement } from '@entur/tooltip';\nimport { space } from '@entur/tokens';\nimport {\n PolymorphicComponentProps,\n getNodeText,\n useOnClickOutside,\n useOnEscape,\n} from '@entur/utils';\n\nimport './OverflowMenu.scss';\n\nexport type OverflowMenuProps = {\n /** Menypunkter (OverflowMenuItem eller OverflowMenuLink) */\n children: React.ReactNode;\n buttonIcon?: React.ReactNode;\n /** Knapp som skal åpne OverflowMenu\n * @default IconButton med VerticalDotsIcon\n */\n button?: React.ReactElement;\n /** Ekstra klassenavn */\n className?: string;\n /** Posisjoneringen av OverflowMenu-lista\n * @default 'bottom-start'\n */\n placement?: Placement;\n /**\n * @deprecated Use placement insted.\n * This is done to standardise the name of\n * the relative position prop used in Entur\n * designs sytstem components\n */\n position?: 'right' | 'left';\n /** Tekst som beskriver knappen som åpner Overflow-menyen\n * @default \"åpne valgmeny\"\n */\n 'aria-label'?: string;\n};\n\ninterface SelectContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>['getItemProps'];\n closeMenuAndReturnFocus: () => void;\n}\n\nconst SelectContext = React.createContext<SelectContextValue>(\n {} as SelectContextValue,\n);\n\nexport const OverflowMenu = ({\n children,\n className,\n button,\n buttonIcon,\n placement = 'bottom-start',\n 'aria-label': ariaLabel = 'åpne valgmeny',\n ...rest\n}: OverflowMenuProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef([]);\n const labelsRef = useRef([]);\n\n const { refs, floatingStyles, context, elements, update } = useFloating({\n placement: standardisePlacement(\n // check for left is added for backwards compatibility\n rest.position === 'left' ? 'bottom-end' : placement,\n ),\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(space.extraSmall2),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (isOpen && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [isOpen, elements, update]);\n\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n });\n\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n activeIndex,\n onMatch: index => isOpen && setActiveIndex(index),\n });\n\n const role = useRole(context, { role: 'menu' });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [listNav, typeahead, role],\n );\n\n const closeMenuAndReturnFocus = () => {\n setIsOpen(false);\n // @ts-expect-error the reference element is actually focusable\n refs.reference.current?.focus?.();\n };\n\n useOnClickOutside([refs.floating, refs.reference], () => setIsOpen(false));\n useOnEscape(refs.floating, closeMenuAndReturnFocus);\n useOnEscape(refs.reference, closeMenuAndReturnFocus);\n\n const selectContext = React.useMemo(\n () => ({\n activeIndex,\n getItemProps,\n closeMenuAndReturnFocus,\n }),\n [activeIndex, getItemProps, closeMenuAndReturnFocus],\n );\n\n const _buttonIcon = buttonIcon ?? <VerticalDotsIcon />;\n\n return (\n <>\n {!button ? (\n <IconButton\n ref={refs.setReference}\n {...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n })}\n {...rest}\n >\n {_buttonIcon}\n </IconButton>\n ) : (\n cloneElement(button, {\n ref: refs.setReference,\n ...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n }),\n ...rest,\n })\n )}\n <SelectContext.Provider value={selectContext}>\n <div\n ref={refs.setFloating}\n style={{ ...floatingStyles, display: isOpen ? 'initial' : 'none' }}\n {...getFloatingProps({\n className: 'eds-overflow-menu__menu-list',\n })}\n >\n <FloatingList elementsRef={listRef} labelsRef={labelsRef}>\n {children}\n </FloatingList>\n </div>\n </SelectContext.Provider>\n </>\n );\n};\n\ntype OverflowMenuItemBaseProps = {\n /** Innholdet til OverflowMenuItem */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Det som skjer når elementet er valgt, enten ved museklikk eller Enter-klikk */\n onSelect?: () => void;\n /** Lenke til siden brukeren skal sendes til.\n * Obs: kun én av onSelect og href skal brukes på ett element\n */\n href?: string;\n /** Om dette valget skal være deaktivert */\n disabled?: boolean;\n};\n\nexport type OverflowMenuItemProps<C extends React.ElementType> =\n PolymorphicComponentProps<C, OverflowMenuItemBaseProps>;\n\nexport const OverflowMenuItem = <C extends React.ElementType = 'button'>({\n children,\n className,\n onSelect = () => undefined,\n href,\n disabled,\n as,\n ...rest\n}: OverflowMenuItemProps<C>) => {\n const { activeIndex, getItemProps, closeMenuAndReturnFocus } =\n useContext(SelectContext);\n const { ref: listItemRef, index } = useListItem({\n label: !disabled ? getNodeText(children) : null,\n });\n\n const isHighlighted = activeIndex === index;\n const isLink = href !== undefined;\n\n const Element = as ?? (isLink ? 'a' : 'button');\n\n return (\n <Element\n ref={listItemRef}\n className={classNames(\n 'eds-overflow-menu__item',\n {\n 'eds-overflow-menu__item--disabled': disabled,\n 'eds-overflow-menu__item--highlighted': isHighlighted,\n },\n className,\n )}\n role=\"menuitem\"\n type={Element === 'button' ? 'button' : undefined}\n aria-disabled={disabled}\n aria-selected={isHighlighted}\n {...getItemProps({\n onClick:\n isLink || disabled\n ? undefined\n : () => {\n onSelect();\n closeMenuAndReturnFocus();\n },\n href: disabled ? undefined : href,\n tabIndex: isHighlighted ? 0 : -1,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n\ntype OverflowMenuLinkExtendedBaseProps = {\n /**\n * @deprecated onSelect is no longer used\n * in OverflowMenuLink, use 'href' instead */\n onSelect?: () => void;\n};\n\nexport const OverflowMenuLink = <C extends React.ElementType = 'a'>(\n props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps,\n) => {\n return <OverflowMenuItem {...props} />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type PaginationPageProps = {\n /** Sidenummeret som er aktivt nå */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Viser siden som aktiv */\n selected?: boolean;\n /** Viser knappen som inaktiv */\n disabled?: boolean;\n /** Callback for når man trykker på siden */\n onClick: () => void;\n /** Tekst for skjermlesere */\n 'aria-label': string;\n 'aria-describedby'?: string;\n};\nexport const PaginationPage: React.FC<PaginationPageProps> = ({\n children,\n className,\n selected,\n disabled,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n}) => (\n <button\n className={classNames(\n 'eds-pagination__controls__page',\n { 'eds-pagination__controls__page--selected': selected },\n { 'eds-pagination__controls__page--disabled': disabled },\n className,\n )}\n disabled={selected || disabled}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-current={selected ? 'page' : false}\n >\n {children}\n </button>\n);\n","import React from 'react';\n\nexport type PaginationInputProps = {\n currentPage: number;\n label?: string;\n onPageChange: (pageNumber: number) => void;\n pageCount: number;\n};\n\nexport const PaginationInput: React.FC<PaginationInputProps> = ({\n currentPage,\n pageCount,\n label = 'Gå til side',\n onPageChange,\n}) => {\n const [input, setInput] = React.useState(String(currentPage));\n // If the currentPage prop changes, we want to reset the input field\n React.useEffect(() => {\n setInput(String(currentPage));\n }, [currentPage]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n let pageNumber = Number(input);\n if (pageNumber === currentPage) {\n return;\n }\n if (Number.isNaN(pageNumber)) {\n pageNumber = currentPage;\n setInput(String(currentPage));\n return;\n }\n if (pageNumber > pageCount) {\n pageNumber = pageCount;\n setInput(String(pageCount));\n } else if (pageNumber < 1) {\n pageNumber = 1;\n setInput(String(1));\n }\n onPageChange(pageNumber);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInput(e.target.value);\n };\n\n return (\n <form onSubmit={handleSubmit} noValidate aria-label=\"form\">\n <label className=\"eds-pagination__controls__input__wrapper\">\n <span className=\"eds-pagination__controls__input__label\">{label}</span>\n <input\n type=\"number\"\n max={pageCount}\n className=\"eds-pagination__controls__input__field\"\n value={input}\n onChange={handleChange}\n />\n </label>\n </form>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { Label } from '@entur/typography';\nimport { useRandomId } from '@entur/utils';\n\nimport { PaginationPage } from './PaginationPage';\nimport { PaginationInput } from './PaginationInput';\nimport { OverflowMenu, OverflowMenuItem } from './OverflowMenu';\n\nimport './Pagination.scss';\n\nexport type PaginationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Sidenummeret som er aktivt nå (1-indeksert) */\n currentPage: number;\n /** Callback for når man ønsker å gå til en ny side */\n onPageChange: (requestedPage: number) => void;\n /** Antall sider totalt */\n pageCount: number;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default \"Gå til forrige side\"\n */\n previousPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"neste side knappen\"\n * @default \"Gå til neste side\"\n */\n nextPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default pageNumber => `Gå til side ${pageNumber}`,\n */\n pageLabel?: (pageNumber: number) => string;\n /**\n * @default \"Nåværende side:\"\n */\n currentPageLabelForScreenreader?: string;\n /** Vis et felt til høyre for pagineringen hvor man kan angi siden man\n * ønsker å vise i et tekstfelt.\n *\n * @default false\n */\n showInput?: boolean;\n /** Label som vises til venstre for input-feltet som vises om `showInput` er true\n * @default \"Gå til side\"\n */\n inputLabel?: string;\n\n /** Hvor mange resultater man har totalt */\n numberOfResults?: number;\n /** Hvor mange resultater som vises per side */\n resultsPerPage?: number;\n /**\n * @default [10,25,50]\n */\n resultsPerPageOptions?: number[];\n /** Callback for når resultater per side oppdateres */\n onResultsPerPageChange?: (e: number) => void;\n /** Brukes for å skjule \"neste side\"-knappen\n * @default false\n */\n hideNextButton?: boolean;\n /** Brukes for å skjule \"forrige side\"-knappen\n * @default false\n */\n hidePrevButton?: boolean;\n /** Teksten som vises for hvilke resultater av sideantallet man viser.\n * @default `Viser resultat ${minPage} - ${maxPage} av ${pageCount}`\n */\n showingResultsLabel?: (\n minPage: number,\n maxPage: number,\n pageCount: number,\n ) => string;\n /** Teksten som vises før \"resultsPerPage\"-velgeren\n * @default \"Vis\"\n */\n showNumberOfResultsLabel?: string;\n [key: string]: any;\n};\n\nexport const Pagination: React.FC<PaginationProps> = ({\n className,\n currentPage,\n inputLabel,\n onPageChange,\n pageCount,\n pageLabel = pageNumber => `Gå til side ${pageNumber}`,\n previousPageLabel = 'Gå til forrige side',\n currentPageLabelForScreenreader = 'Nåværende side:',\n lastPageLabelForScreenreader = ', siste side',\n showInput,\n\n numberOfResults,\n resultsPerPage,\n resultsPerPageOptions = [10, 25, 50],\n onResultsPerPageChange,\n\n showNumberOfResultsLabel = 'Vis',\n nextPageLabel = 'Gå til neste side',\n showingResultsLabel = (minPage, maxPage, pageCount) =>\n `Viser resultat ${minPage}–${maxPage} av ${pageCount}`,\n changeNumberOfResultsLabelForScreenreader = `Viser ${resultsPerPage} resultater. Trykk for å endre antall. Åpner en flervalgsmeny.`,\n hideNextButton = false,\n hidePrevButton = false,\n ...rest\n}) => {\n const [listedEntries, setListedEntries] = useState<Array<number | '…'>>([]);\n const paginationId = useRandomId('eds-pagination');\n\n const isFirstPostSelected = currentPage === 1;\n const isLastPostSelected = currentPage === pageCount;\n const noEllipsis = pageCount <= 7;\n const onlyLeadingEllipsis = !noEllipsis && currentPage < 5;\n const onlyTrailingEllipsis = !noEllipsis && pageCount - currentPage <= 3;\n\n useEffect(() => {\n if (pageCount < 1) return;\n if (noEllipsis) {\n setListedEntries(\n Array(pageCount)\n .fill(null)\n .map((_, i) => i + 1),\n );\n } else if (onlyLeadingEllipsis) {\n setListedEntries([1, 2, 3, 4, 5, '…', pageCount]);\n } else if (onlyTrailingEllipsis) {\n setListedEntries([\n 1,\n '…',\n pageCount - 4,\n pageCount - 3,\n pageCount - 2,\n pageCount - 1,\n pageCount,\n ]);\n } else {\n // leading and trailing ellipsis\n setListedEntries([\n 1,\n '…',\n currentPage - 1,\n currentPage,\n currentPage + 1,\n '…',\n pageCount,\n ]);\n }\n }, [\n noEllipsis,\n onlyLeadingEllipsis,\n onlyTrailingEllipsis,\n currentPage,\n pageCount,\n ]);\n\n if (pageCount < 1) {\n return null;\n }\n\n return (\n <nav\n className={classNames('eds-pagination', className)}\n aria-label=\"Paginering\"\n {...rest}\n >\n {resultsPerPage && numberOfResults && (\n <div className=\"eds-pagination__results\">\n {onResultsPerPageChange && (\n <>\n <Label as=\"p\" aria-hidden=\"true\">\n {showNumberOfResultsLabel}\n </Label>\n <OverflowMenu\n className=\"eds-pagination__results__change-number-of-results\"\n buttonIcon={\n <span className=\"eds-pagination__results__change-number-of-results__content\">\n {resultsPerPage}{' '}\n <DownArrowIcon\n className=\"eds-pagination__results__change-number-of-results__content__arrow\"\n aria-hidden=\"true\"\n />\n </span>\n }\n aria-label={changeNumberOfResultsLabelForScreenreader}\n placement=\"bottom-end\"\n >\n {resultsPerPageOptions.map((option: number, key: number) => (\n <OverflowMenuItem\n key={key}\n onSelect={() => onResultsPerPageChange(option)}\n >\n {option}\n </OverflowMenuItem>\n ))}\n </OverflowMenu>\n </>\n )}\n <Label as=\"p\">\n {showingResultsLabel(\n (currentPage - 1) * resultsPerPage + 1,\n currentPage * resultsPerPage > numberOfResults\n ? numberOfResults\n : currentPage * resultsPerPage,\n numberOfResults,\n )}\n </Label>\n </div>\n )}\n <div className=\"eds-pagination__controls\">\n {!hidePrevButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage - 1)}\n aria-label={previousPageLabel}\n aria-describedby={paginationId}\n disabled={isFirstPostSelected}\n >\n <LeftArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {listedEntries.map((entry, index) =>\n entry === '…' ? (\n <Ellipsis key={`ellipsis-${index}`} />\n ) : (\n <PaginationPage\n selected={entry === currentPage}\n onClick={() => onPageChange(entry)}\n aria-label={`${pageLabel(entry)}${\n entry === pageCount ? lastPageLabelForScreenreader : ''\n }`}\n aria-describedby={\n entry !== currentPage ? paginationId : undefined\n }\n key={entry}\n >\n {entry}\n </PaginationPage>\n ),\n )}\n {!hideNextButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage + 1)}\n aria-label={nextPageLabel}\n aria-describedby={paginationId}\n disabled={isLastPostSelected}\n >\n <RightArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {showInput && (\n <PaginationInput\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={onPageChange}\n label={inputLabel}\n />\n )}\n </div>\n <VisuallyHidden id={paginationId}>\n {currentPageLabelForScreenreader} {currentPage}\n </VisuallyHidden>\n </nav>\n );\n};\n\nconst Ellipsis: React.FC = () => (\n <span className=\"eds-pagination__controls__page__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './SideNavigation.scss';\n\nexport type SideNavigationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse på menyen\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\ntype InternalMarker = {\n __IS_ENTUR_MENU__: boolean;\n};\n\nexport const SideNavigation: React.FC<SideNavigationProps> & InternalMarker = ({\n className,\n children,\n size = 'medium',\n ...rest\n}) => {\n if (!children || !React.Children.count(children)) {\n return null;\n }\n return (\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\n/** This is required to check that the Menu */\nSideNavigation.__IS_ENTUR_MENU__ = true;\n","import { useEffect, useState } from 'react';\n\nexport const useShowDelayedLabel = (isCollapsed: boolean): [boolean] => {\n const [showLabel, setShowLabel] = useState(true);\n const hideDelay = 50;\n const showDelay = 200;\n useEffect(() => {\n if (isCollapsed) {\n setTimeout(() => {\n setShowLabel(false);\n }, hideDelay);\n }\n if (!isCollapsed) {\n setTimeout(() => {\n setShowLabel(true);\n }, showDelay);\n }\n return () => undefined;\n }, [isCollapsed]);\n return [showLabel];\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nfunction isActiveRecursively(child: any): boolean {\n if (!child.props) {\n return false;\n }\n if (child.props.active) {\n return true;\n }\n if (!child.props.children) {\n return false;\n }\n\n return React.Children.toArray(child.props.children).some(child =>\n isActiveRecursively(child),\n );\n}\n\ntype BaseSideNavigationItemOwnProps = {\n active?: boolean;\n as?: 'a' | 'button' | React.ElementType;\n className?: string;\n icon?: React.ReactNode;\n children: React.ReactNode;\n subMenu?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type BaseSideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementBaseItem,\n> = PolymorphicComponentProps<T, BaseSideNavigationItemOwnProps>;\n\nconst defaultElementBaseItem = 'a';\n\nconst BaseSideNavigationItem: <\n E extends React.ElementType = typeof defaultElementBaseItem,\n>(\n props: BaseSideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementBaseItem>(\n {\n className,\n active = false,\n subMenu,\n icon,\n children,\n as,\n ...rest\n }: BaseSideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementBaseItem;\n const { isCollapsed } = useSideNavigationContext();\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n return (\n <li className={classNames('eds-side-navigation__item', className)}>\n <Element\n className={classNames('eds-side-navigation__click-target', {\n 'eds-side-navigation__click-target--active': active,\n })}\n aria-label={isCollapsed ? children : undefined}\n aria-current={active ? 'page' : undefined}\n ref={ref}\n {...rest}\n >\n {icon}\n {showLabel && children}\n </Element>\n {subMenu}\n </li>\n );\n },\n);\n\ntype DisabledSideNavigationItemProps = {\n children: React.ReactNode;\n [key: string]: any;\n};\nconst DisabledSideNavigationItem = React.forwardRef<\n HTMLButtonElement,\n DisabledSideNavigationItemProps\n>(({ children, ...rest }, ref: React.Ref<HTMLButtonElement>) => (\n <BaseSideNavigationItem\n as=\"button\"\n disabled={true}\n aria-disabled={true}\n ref={ref}\n type=\"button\"\n {...rest}\n >\n {children}\n </BaseSideNavigationItem>\n));\n\nexport type SideNavigationItemOwnProps = {\n /** Om meny-elementet er det som er aktivt */\n active?: boolean;\n /** HTML-elementet eller React-komponenten som rendres */\n as?: 'a' | 'button' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Om meny-elementet er deaktivert */\n disabled?: boolean;\n /** Callback for når man klikker på meny-elementet */\n onClick?: (e: React.MouseEvent) => any;\n /** Sett til true om du vil tvinge alle sub-menus til å rendre barna sine. Typisk for å vise søkeresultater */\n forceExpandSubMenus?: boolean;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type SideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementItem,\n> = PolymorphicComponentProps<T, SideNavigationItemOwnProps>;\n\nconst defaultElementItem = 'a';\n\nexport const SideNavigationItem: <\n E extends React.ElementType = typeof defaultElementItem,\n>(\n props: SideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementItem>(\n {\n active,\n disabled,\n children,\n forceExpandSubMenus,\n as,\n ...rest\n }: SideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementItem;\n const childrenArray = React.Children.toArray(children);\n const subMenu = childrenArray.find(\n (child: any) => child && child.type && child.type.__IS_ENTUR_MENU__,\n );\n const label = subMenu\n ? childrenArray.filter(child => child !== subMenu)\n : children;\n\n if (disabled) {\n return (\n <DisabledSideNavigationItem ref={ref} {...rest}>\n {label}\n </DisabledSideNavigationItem>\n );\n }\n\n if (!subMenu) {\n return (\n <BaseSideNavigationItem\n as={Element}\n active={active}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n }\n\n const isExpanded =\n forceExpandSubMenus ||\n isActiveRecursively({ props: { children, active } });\n\n return (\n <BaseSideNavigationItem\n active={active}\n subMenu={isExpanded && subMenu}\n aria-expanded={isExpanded}\n as={Element}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseExpand, ExpandArrow } from '@entur/expand';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { useControllableProp } from '@entur/utils';\n\nexport type SideNavigationGroupProps = {\n /** Skal menygruppen være ekspandert by default? Kun relevant om komponenten ikke er kontrollert\n * @default false\n */\n defaultOpen?: boolean;\n /** Er menyen åpen? */\n open?: boolean;\n /** Kalles når menygruppen åpnes eller lukkes */\n onToggle?: (e?: boolean) => void;\n /** Ekstra klassenavn */\n className?: string;\n /** Menyen som skal grupperes */\n children: React.ReactNode;\n /** Overskriften til menyen */\n title: React.ReactNode;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const SideNavigationGroup: React.FC<SideNavigationGroupProps> = ({\n defaultOpen = false,\n open,\n onToggle,\n className,\n children,\n title,\n icon,\n ...rest\n}) => {\n const [isOpen, setOpen] = useControllableProp({\n prop: open,\n updater: onToggle,\n defaultValue: defaultOpen,\n });\n const { isCollapsed } = useSideNavigationContext();\n\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n\n return (\n <div\n className={classNames('eds-side-navigation-group', className)}\n {...rest}\n >\n <button\n onClick={() => setOpen(!isOpen)}\n type=\"button\"\n className=\"eds-side-navigation-group__trigger\"\n aria-label={`${title}, utvidbar meny, ${isOpen ? 'åpen' : 'lukket'}`}\n >\n <span>\n {icon && (\n <span className=\"eds-side-navigation-group__trigger-icon\">\n {icon}\n </span>\n )}\n {showLabel && title}\n </span>\n {showLabel && (\n <ExpandArrow\n open={isOpen}\n className=\"eds-side-navigation-group__expand-icon\"\n />\n )}\n </button>\n <BaseExpand\n className=\"eds-side-navigation-group__expand-content\"\n open={isOpen}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport './Stepper.scss';\n\nexport type StepperProps = {\n /** Liste med steg-navn i rekkefølge. */\n steps: string[];\n /** Det nåværende steget. 0-indeksert */\n activeIndex: number;\n /** Om stepperen skal være et interaktivt-navigasjonselement eller ikke\n * @default false\n */\n interactive?: boolean;\n /** Kalles med indeksen til det klikkede steget.\n * Fungerer kun hvis Stepper-en er interaktiv */\n onStepClick?: (index: number) => void;\n /** Om stepper skal vise indeksering av hvilket trinn man er på\n * @default true\n */\n showStepperIndex?: boolean;\n /** Ekstra klassenavn. */\n className?: string;\n /** Skjermlesertekst for ordet 'steg' som i '_steg_ 1 av 3'\n * @default 'Steg'\n */\n ariaLabelStep?: string;\n /** Skjermlesertekst for ordet 'av' som i 'steg 1 _av_ 3'\n * @defaul 'av'\n */\n ariaLabelOf?: string;\n /** Skjermlesertekst for ordet fullført\n * @default 'fullført'\n */\n ariaLabelCompleted?: string;\n /** Skjermlesertekst for oppsummering av hele stepper-en\n * @default `Stegindikator med ${steps.length} steg, du er på steg ${activeIndex + 1} ${steps[activeIndex]},`\n */\n ariaLabelSummary?: string;\n [key: string]: any;\n};\n\nexport const Stepper: React.FC<StepperProps> = ({\n activeIndex,\n className,\n interactive = false,\n onStepClick,\n showStepperIndex = true,\n steps,\n ariaLabelStep = 'Steg',\n ariaLabelOf = 'av',\n ariaLabelCompleted = 'fullført',\n ariaLabelSummary = `Stegindikator med ${steps.length} steg, du er på steg ${\n activeIndex + 1\n } ${steps[activeIndex]},`,\n ...rest\n}) => {\n return (\n <ol\n className={classNames('eds-stepper', className)}\n aria-label={ariaLabelSummary}\n {...rest}\n >\n {steps.map((step, i) => {\n const isCurrent = i === activeIndex;\n const isInteractive = interactive && activeIndex > i;\n const Element = isInteractive ? 'button' : 'div';\n const isCompleted = activeIndex > i;\n const currentStepSummary = `${ariaLabelStep} ${i + 1} ${ariaLabelOf} ${\n steps.length\n }, ${step} ${isCompleted ? `, ${ariaLabelCompleted}` : ''}`;\n const props = isInteractive ? { onClick: () => onStepClick?.(i) } : {};\n\n return (\n <li key={step} className=\"eds-stepper__step__wrapper\">\n <Element\n className={classNames(\n 'eds-stepper__step',\n { 'eds-stepper__step--active': isCurrent },\n { 'eds-stepper__step--completed': isCompleted },\n { 'eds-stepper__step--interactive': isInteractive },\n )}\n aria-current={isCurrent ? 'step' : undefined}\n type={Element === 'button' ? 'button' : undefined}\n {...props}\n >\n <div className=\"eds-stepper__step__line\" aria-hidden={true} />\n <span className=\"eds-stepper__step__label\" aria-hidden={true}>\n {showStepperIndex && i + 1 + '.'} {step}\n </span>\n <VisuallyHidden>{currentStepSummary}</VisuallyHidden>\n </Element>\n </li>\n );\n })}\n </ol>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './TopNavigationItem.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TopNavigationItemOwnProps = {\n /** Om komponenten vises som valgt eller ikke\n * @default false\n */\n active?: boolean;\n /** Tekste som vises */\n children: React.ReactNode;\n /** HTML-elementet eller React-komponenten som lager komponenten\n * @default 'a'\n */\n as?: 'a' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type TopNavigationItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, TopNavigationItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const TopNavigationItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n active = false,\n className,\n as,\n ...rest\n}: TopNavigationItemProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n return (\n <Element\n className={classNames([\n 'eds-top-navigation-item',\n className,\n { 'eds-top-navigation-item--active': active },\n ])}\n {...rest}\n />\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles(\n 'menu',\n 'expand',\n 'icons',\n 'typography',\n 'button',\n 'layout',\n 'a11y',\n);\n\nexport * from './BreadcrumbNavigation';\nexport * from './BreadcrumbItem';\nexport * from './CollapsibleSideNavigation';\nexport * from './Logo';\nexport * from './OverflowMenu';\nexport * from './Pagination';\nexport * from './SideNavigation';\nexport * from './SideNavigationItem';\nexport * from './SideNavigationGroup';\nexport * from './Stepper';\nexport * from './TopNavigationItem';\n"],"names":["defaultElement","pageCount","child"],"mappings":"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"}
1
+ {"version":3,"file":"menu.esm.js","sources":["../src/BreadcrumbNavigation.tsx","../src/BreadcrumbItem.tsx","../src/CollapsibleSideNavigation.tsx","../src/Logo.tsx","../src/OverflowMenu.tsx","../src/PaginationPage.tsx","../src/PaginationInput.tsx","../src/Pagination.tsx","../src/SideNavigation.tsx","../src/useShowDelayedLabel.ts","../src/SideNavigationItem.tsx","../src/SideNavigationGroup.tsx","../src/Stepper.tsx","../src/TopNavigationItem.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nimport './BreadcrumbNavigation.scss';\n\nexport type BreadcrumbNavigationProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n 'aria-label' | 'children'\n> & {\n /** Label for brødsmulestien.\n * @default 'Brødsmulesti'\n */\n 'aria-label'?: string;\n /** En liste med BreadcrumbItem-er */\n children: React.ReactNode;\n};\n\nexport const BreadcrumbNavigation = ({\n 'aria-label': ariaLabel = 'Brødsmulesti',\n className,\n children,\n ...rest\n}: BreadcrumbNavigationProps) => {\n const childrenArray = React.Children.toArray(children);\n\n const _children = childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n if (process.env.NODE_ENV !== 'production')\n console.warn('Received a non-element child, it will be ignored.');\n\n return null;\n }\n\n const element = child as React.ReactElement<any>;\n return React.cloneElement(element, {\n isCurrent: index + 1 === childrenArray.length,\n });\n });\n\n return (\n <nav\n className={classNames('eds-breadcrumbs', className)}\n aria-label={ariaLabel}\n {...rest}\n >\n <ol className=\"eds-breadcrumbs__list\">{_children}</ol>\n </nav>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type BreadcrumbItemOwnProps = {\n /** Komponenten som rendres\n * @default \"a\"\n */\n as?: 'a' | React.ElementType;\n /** Teksten som vises */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** @internal\n * Markerer aktivt element, i.e. siste element.\n * Settes automatisk av BreadcrumbNavigation og kan ikke overskrives */\n isCurrent?: boolean;\n};\n\nexport type BreadcrumbItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, BreadcrumbItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const BreadcrumbItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n className,\n isCurrent,\n as,\n ...rest\n}: BreadcrumbItemProps<E>): JSX.Element => {\n const Element: React.ElementType =\n as || (isCurrent ? 'span' : defaultElement);\n return (\n <li className={classNames('eds-breadcrumbs__item', className)}>\n <Element\n aria-current={isCurrent ? 'page' : undefined}\n className={classNames('eds-breadcrumbs__item__link', {\n 'eds-breadcrumbs__item__link--current': isCurrent,\n })}\n {...rest}\n />\n {!isCurrent && (\n <RightArrowIcon\n className=\"eds-breadcrumbs__separator\"\n inline\n role=\"presentation\"\n />\n )}\n </li>\n );\n};\n","import React from 'react';\nimport { SideNavigationProps } from './SideNavigation';\nimport { useControllableProp } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, MenuIcon } from '@entur/icons';\n\ntype CollapsibleSideNavigationProps = SideNavigationProps & {\n /**Tilstand til menyen\n * @default false\n */\n collapsed?: boolean;\n /** Kalles når menyen åpnes eller lukkes */\n onCollapseToggle?: (e: any) => void;\n /** Posisjonen til Collapsible-knappen, målt fra toppen (som CSS-enhet)\n * @default 50%\n */\n collapsibleButtonPosition?: string;\n /** Aria-label for knappen som åpner menyen\n * @default \"Åpne sidemeny\"\n */\n openSideMenuAriaLabel?: string;\n /** Aria-label for knappen som lukker menyen\n * @default \"Lukk sidemeny\"\n */\n closeSideMenuAriaLabel?: string;\n};\n\nexport const CollapsibleSideNavigation = ({\n className,\n children,\n size,\n collapsed: collapsible,\n onCollapseToggle,\n collapsibleButtonPosition = '50%',\n openSideMenuAriaLabel = 'Åpne sidemeny',\n closeSideMenuAriaLabel = 'Lukk sidemeny',\n ...rest\n}: CollapsibleSideNavigationProps) => {\n const [collapsedMenu, setCollapsedMenu] = useControllableProp({\n prop: collapsible,\n defaultValue: false,\n updater: onCollapseToggle,\n });\n\n return (\n <SideNavigationContext.Provider\n value={{\n isCollapsed: collapsedMenu,\n }}\n >\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n { 'eds-side-navigation--collapsed': collapsedMenu },\n className,\n )}\n {...rest}\n >\n {children}\n <button\n className=\"eds-side-navigation__collapse-button\"\n onClick={() => setCollapsedMenu(!collapsedMenu)}\n style={{ top: `${collapsibleButtonPosition}` }}\n >\n {collapsedMenu ? (\n <MenuIcon aria-label={openSideMenuAriaLabel} />\n ) : (\n <LeftArrowIcon aria-label={closeSideMenuAriaLabel} />\n )}\n </button>\n </ul>\n </SideNavigationContext.Provider>\n );\n};\n\nconst SideNavigationContext = React.createContext<{\n isCollapsed: boolean;\n}>({\n isCollapsed: false,\n});\n\nexport const useSideNavigationContext: () => { isCollapsed: boolean } = () => {\n const context = React.useContext(SideNavigationContext);\n if (!context) {\n console.error(\n 'Error reading SideNavigationContext. Please contact maintainer of @entur/menu',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport './Logo.scss';\n\nexport type LogoOwnProps = {\n /** Produktnavnet som vises etter Entur-logoen (f.eks. \"Tavla\", \"Partner\") */\n productName?: string;\n /** Størrelsen på logoen\n * @default 'medium'\n */\n size?: 'medium' | 'small';\n /** URL-en logoen lenker til. Gjør at komponenten rendres som en lenke */\n href?: string;\n /** HTML-elementet eller React-komponenten som brukes\n * @default 'div' (eller 'a' hvis href er satt)\n */\n as?: React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: never;\n};\n\nexport type LogoProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentPropsWithRef<T, LogoOwnProps>;\n\nexport type LogoComponent = <\n E extends React.ElementType = typeof defaultElement,\n>(\n props: LogoProps<E>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Logo: LogoComponent = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n productName,\n size = 'medium',\n href,\n as,\n className,\n ...rest\n }: LogoProps<E>,\n ref: PolymorphicRef<E>,\n ) => {\n const Element: React.ElementType = as || (href ? 'a' : defaultElement);\n\n return (\n <Element\n className={classNames('eds-logo', `eds-logo--${size}`, className)}\n ref={ref}\n href={typeof Element !== 'string' || Element === 'a' ? href : undefined}\n {...rest}\n >\n <EnturSvgLogo className=\"eds-logo__svg\" />\n {productName && (\n <span className=\"eds-logo__product-name\">{productName}</span>\n )}\n </Element>\n );\n },\n);\n\nconst EnturSvgLogo: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox=\"0 0 68.625 20.8254\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Entur\"\n focusable=\"false\"\n >\n {/* E */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"10.422 14.49 10.422 12.036 2.707 12.036 2.707 8.533 9.552 8.533 9.552 6.079 2.707 6.079 2.707 2.455 10.422 2.455 10.422 0 0 0 0 14.49\"\n />\n {/* n */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"13.495 0 13.205 0 13.205 14.49 15.912 14.49 15.912 5.881 25.212 14.49 25.502 14.49 25.502 0 22.794 0 22.794 8.77\"\n />\n {/* Red bar under EN */}\n <polygon\n className=\"eds-logo__entur-bar\"\n points=\"25.501 17.824 0 17.824 0 20.052 25.501 20.052\"\n />\n {/* T */}\n <polygon\n className=\"eds-logo__entur-letter\"\n points=\"32.607 8.532 32.607 20.567 35.313 20.567 35.313 8.532 39.354 8.532 39.354 6.077 28.546 6.077 28.546 8.532\"\n />\n {/* U */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M50.935 6.076v8.651c0 .726-.116 1.326-.348 1.802-.232.475-.519.85-.861 1.127-.341.278-.708.469-1.102.574-.392.107-.744.158-1.053.158-.309 0-.661-.051-1.054-.158-.393-.105-.76-.296-1.101-.574-.343-.277-.629-.652-.861-1.127-.232-.476-.348-1.076-.348-1.802v-8.651H41.5v8.651c0 .924.144 1.762.435 2.515.289.751.699 1.389 1.227 1.918.529.53 1.168.938 1.916 1.23.746.288 1.577.435 2.493.435.928 0 1.765-.147 2.513-.435.747-.292 1.384-.7 1.914-1.23.529-.529.935-1.167 1.218-1.918.284-.753.425-1.591.425-2.515v-8.651z\"\n />\n {/* R */}\n <path\n className=\"eds-logo__entur-letter\"\n d=\"M56.734 6.076v14.49h2.708v-4.612h2.679l3.277 4.612h3.227l-3.524-4.869c.438-.12.843-.328 1.211-.624.368-.296.678-.65.93-1.059.252-.41.448-.869.59-1.376.142-.507.214-1.033.214-1.573 0-.726-.121-1.397-.36-2.01-.238-.614-.57-1.141-.997-1.583-.425-.442-.939-.784-1.54-1.028-.503-.247-1.165-.369-1.888-.369zm2.708 2.456h3.083c.501 0 .929.065 1.281.198.354.13.642.309.866.533.227.225.394.489.503.792.108.304.163.632.163.991 0 .303-.038.603-.116.899-.076.298-.22.566-.433.802-.211.239-.501.43-.866.574-.368.145-.832.218-1.398.218h-3.083z\"\n />\n </svg>\n);\n","import React, {\n cloneElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n FloatingList,\n autoUpdate,\n flip,\n offset,\n shift,\n useFloating,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react';\n\nimport { IconButton } from '@entur/button';\nimport { VerticalDotsIcon } from '@entur/icons';\nimport { Placement, standardisePlacement } from '@entur/tooltip';\nimport { space } from '@entur/tokens';\nimport {\n PolymorphicComponentProps,\n getNodeText,\n useOnClickOutside,\n useOnEscape,\n} from '@entur/utils';\n\nimport './OverflowMenu.scss';\n\nexport type OverflowMenuProps = {\n /** Menypunkter (OverflowMenuItem eller OverflowMenuLink) */\n children: React.ReactNode;\n buttonIcon?: React.ReactNode;\n /** Knapp som skal åpne OverflowMenu\n * @default IconButton med VerticalDotsIcon\n */\n button?: React.ReactElement;\n /** Ekstra klassenavn */\n className?: string;\n /** Posisjoneringen av OverflowMenu-lista\n * @default 'bottom-start'\n */\n placement?: Placement;\n /**\n * @deprecated Use placement insted.\n * This is done to standardise the name of\n * the relative position prop used in Entur\n * designs sytstem components\n */\n position?: 'right' | 'left';\n /** Tekst som beskriver knappen som åpner Overflow-menyen\n * @default \"åpne valgmeny\"\n */\n 'aria-label'?: string;\n};\n\ninterface SelectContextValue {\n activeIndex: number | null;\n getItemProps: ReturnType<typeof useInteractions>['getItemProps'];\n closeMenuAndReturnFocus: () => void;\n}\n\nconst SelectContext = React.createContext<SelectContextValue>(\n {} as SelectContextValue,\n);\n\nexport const OverflowMenu = ({\n children,\n className,\n button,\n buttonIcon,\n placement = 'bottom-start',\n 'aria-label': ariaLabel = 'åpne valgmeny',\n ...rest\n}: OverflowMenuProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef([]);\n const labelsRef = useRef([]);\n\n const { refs, floatingStyles, context, elements, update } = useFloating({\n placement: standardisePlacement(\n // check for left is added for backwards compatibility\n rest.position === 'left' ? 'bottom-end' : placement,\n ),\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n offset(space.extraSmall2),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (isOpen && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [isOpen, elements, update]);\n\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n });\n\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n activeIndex,\n onMatch: index => isOpen && setActiveIndex(index),\n });\n\n const role = useRole(context, { role: 'menu' });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [listNav, typeahead, role],\n );\n\n const closeMenuAndReturnFocus = () => {\n setIsOpen(false);\n // @ts-expect-error the reference element is actually focusable\n refs.reference.current?.focus?.();\n };\n\n useOnClickOutside([refs.floating, refs.reference], () => setIsOpen(false));\n useOnEscape(refs.floating, closeMenuAndReturnFocus);\n useOnEscape(refs.reference, closeMenuAndReturnFocus);\n\n const selectContext = React.useMemo(\n () => ({\n activeIndex,\n getItemProps,\n closeMenuAndReturnFocus,\n }),\n [activeIndex, getItemProps, closeMenuAndReturnFocus],\n );\n\n const _buttonIcon = buttonIcon ?? <VerticalDotsIcon />;\n\n return (\n <>\n {!button ? (\n <IconButton\n ref={refs.setReference}\n {...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n })}\n {...rest}\n >\n {_buttonIcon}\n </IconButton>\n ) : (\n cloneElement(button, {\n ref: refs.setReference,\n ...getReferenceProps({\n onClick: () => setIsOpen(!isOpen),\n className,\n 'aria-label': ariaLabel,\n type: 'button',\n }),\n ...rest,\n })\n )}\n <SelectContext.Provider value={selectContext}>\n <div\n ref={refs.setFloating}\n style={{ ...floatingStyles, display: isOpen ? 'initial' : 'none' }}\n {...getFloatingProps({\n className: 'eds-overflow-menu__menu-list',\n })}\n >\n <FloatingList elementsRef={listRef} labelsRef={labelsRef}>\n {children}\n </FloatingList>\n </div>\n </SelectContext.Provider>\n </>\n );\n};\n\ntype OverflowMenuItemBaseProps = {\n /** Innholdet til OverflowMenuItem */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Det som skjer når elementet er valgt, enten ved museklikk eller Enter-klikk */\n onSelect?: () => void;\n /** Lenke til siden brukeren skal sendes til.\n * Obs: kun én av onSelect og href skal brukes på ett element\n */\n href?: string;\n /** Om dette valget skal være deaktivert */\n disabled?: boolean;\n};\n\nexport type OverflowMenuItemProps<C extends React.ElementType> =\n PolymorphicComponentProps<C, OverflowMenuItemBaseProps>;\n\nexport const OverflowMenuItem = <C extends React.ElementType = 'button'>({\n children,\n className,\n onSelect = () => undefined,\n href,\n disabled,\n as,\n ...rest\n}: OverflowMenuItemProps<C>) => {\n const { activeIndex, getItemProps, closeMenuAndReturnFocus } =\n useContext(SelectContext);\n const { ref: listItemRef, index } = useListItem({\n label: !disabled ? getNodeText(children) : null,\n });\n\n const isHighlighted = activeIndex === index;\n const isLink = href !== undefined;\n\n const Element = as ?? (isLink ? 'a' : 'button');\n\n return (\n <Element\n ref={listItemRef}\n className={classNames(\n 'eds-overflow-menu__item',\n {\n 'eds-overflow-menu__item--disabled': disabled,\n 'eds-overflow-menu__item--highlighted': isHighlighted,\n },\n className,\n )}\n role=\"menuitem\"\n type={Element === 'button' ? 'button' : undefined}\n aria-disabled={disabled}\n aria-selected={isHighlighted}\n {...getItemProps({\n onClick:\n isLink || disabled\n ? undefined\n : () => {\n onSelect();\n closeMenuAndReturnFocus();\n },\n href: disabled ? undefined : href,\n tabIndex: isHighlighted ? 0 : -1,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n\ntype OverflowMenuLinkExtendedBaseProps = {\n /**\n * @deprecated onSelect is no longer used\n * in OverflowMenuLink, use 'href' instead */\n onSelect?: () => void;\n};\n\nexport const OverflowMenuLink = <C extends React.ElementType = 'a'>(\n props: OverflowMenuItemProps<C> & OverflowMenuLinkExtendedBaseProps,\n) => {\n return <OverflowMenuItem {...props} />;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type PaginationPageProps = {\n /** Sidenummeret som er aktivt nå */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Viser siden som aktiv */\n selected?: boolean;\n /** Viser knappen som inaktiv */\n disabled?: boolean;\n /** Callback for når man trykker på siden */\n onClick: () => void;\n /** Tekst for skjermlesere */\n 'aria-label': string;\n 'aria-describedby'?: string;\n};\nexport const PaginationPage = ({\n children,\n className,\n selected,\n disabled,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby,\n}: PaginationPageProps) => (\n <button\n className={classNames(\n 'eds-pagination__controls__page',\n { 'eds-pagination__controls__page--selected': selected },\n { 'eds-pagination__controls__page--disabled': disabled },\n className,\n )}\n disabled={selected || disabled}\n type=\"button\"\n onClick={onClick}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n aria-current={selected ? 'page' : false}\n >\n {children}\n </button>\n);\n","import React from 'react';\n\nexport type PaginationInputProps = {\n currentPage: number;\n label?: string;\n onPageChange: (pageNumber: number) => void;\n pageCount: number;\n};\n\nexport const PaginationInput = ({\n currentPage,\n pageCount,\n label = 'Gå til side',\n onPageChange,\n}: PaginationInputProps) => {\n const [input, setInput] = React.useState(String(currentPage));\n // If the currentPage prop changes, we want to reset the input field\n React.useEffect(() => {\n setInput(String(currentPage));\n }, [currentPage]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n let pageNumber = Number(input);\n if (pageNumber === currentPage) {\n return;\n }\n if (Number.isNaN(pageNumber)) {\n pageNumber = currentPage;\n setInput(String(currentPage));\n return;\n }\n if (pageNumber > pageCount) {\n pageNumber = pageCount;\n setInput(String(pageCount));\n } else if (pageNumber < 1) {\n pageNumber = 1;\n setInput(String(1));\n }\n onPageChange(pageNumber);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInput(e.target.value);\n };\n\n return (\n <form onSubmit={handleSubmit} noValidate aria-label=\"form\">\n <label className=\"eds-pagination__controls__input__wrapper\">\n <span className=\"eds-pagination__controls__input__label\">{label}</span>\n <input\n type=\"number\"\n max={pageCount}\n className=\"eds-pagination__controls__input__field\"\n value={input}\n onChange={handleChange}\n />\n </label>\n </form>\n );\n};\n","import { useEffect, useId, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { Label } from '@entur/typography';\n\nimport { PaginationPage } from './PaginationPage';\nimport { PaginationInput } from './PaginationInput';\nimport { OverflowMenu, OverflowMenuItem } from './OverflowMenu';\n\nimport './Pagination.scss';\n\nexport type PaginationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Sidenummeret som er aktivt nå (1-indeksert) */\n currentPage: number;\n /** Callback for når man ønsker å gå til en ny side */\n onPageChange: (requestedPage: number) => void;\n /** Antall sider totalt */\n pageCount: number;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default \"Gå til forrige side\"\n */\n previousPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"neste side knappen\"\n * @default \"Gå til neste side\"\n */\n nextPageLabel?: string;\n /**\n * Hva som blir lest opp når brukere av skjermlesere navigerer til \"forrige side knappen\"\n * @default pageNumber => `Gå til side ${pageNumber}`,\n */\n pageLabel?: (pageNumber: number) => string;\n /**\n * @default \"Nåværende side:\"\n */\n currentPageLabelForScreenreader?: string;\n /** Vis et felt til høyre for pagineringen hvor man kan angi siden man\n * ønsker å vise i et tekstfelt.\n *\n * @default false\n */\n showInput?: boolean;\n /** Label som vises til venstre for input-feltet som vises om `showInput` er true\n * @default \"Gå til side\"\n */\n inputLabel?: string;\n\n /** Hvor mange resultater man har totalt */\n numberOfResults?: number;\n /** Hvor mange resultater som vises per side */\n resultsPerPage?: number;\n /**\n * @default [10,25,50]\n */\n resultsPerPageOptions?: number[];\n /** Callback for når resultater per side oppdateres */\n onResultsPerPageChange?: (e: number) => void;\n /** Brukes for å skjule \"neste side\"-knappen\n * @default false\n */\n hideNextButton?: boolean;\n /** Brukes for å skjule \"forrige side\"-knappen\n * @default false\n */\n hidePrevButton?: boolean;\n /** Teksten som vises for hvilke resultater av sideantallet man viser.\n * @default `Viser resultat ${minPage} - ${maxPage} av ${pageCount}`\n */\n showingResultsLabel?: (\n minPage: number,\n maxPage: number,\n pageCount: number,\n ) => string;\n /** Teksten som vises før \"resultsPerPage\"-velgeren\n * @default \"Vis\"\n */\n showNumberOfResultsLabel?: string;\n [key: string]: any;\n};\n\nexport const Pagination = ({\n className,\n currentPage,\n inputLabel,\n onPageChange,\n pageCount,\n pageLabel = pageNumber => `Gå til side ${pageNumber}`,\n previousPageLabel = 'Gå til forrige side',\n currentPageLabelForScreenreader = 'Nåværende side:',\n lastPageLabelForScreenreader = ', siste side',\n showInput,\n\n numberOfResults,\n resultsPerPage,\n resultsPerPageOptions = [10, 25, 50],\n onResultsPerPageChange,\n\n showNumberOfResultsLabel = 'Vis',\n nextPageLabel = 'Gå til neste side',\n showingResultsLabel = (minPage, maxPage, pageCount) =>\n `Viser resultat ${minPage}–${maxPage} av ${pageCount}`,\n changeNumberOfResultsLabelForScreenreader = `Viser ${resultsPerPage} resultater. Trykk for å endre antall. Åpner en flervalgsmeny.`,\n hideNextButton = false,\n hidePrevButton = false,\n ...rest\n}: PaginationProps) => {\n const [listedEntries, setListedEntries] = useState<Array<number | '…'>>([]);\n const paginationId = `eds-pagination${useId()}`;\n\n const isFirstPostSelected = currentPage === 1;\n const isLastPostSelected = currentPage === pageCount;\n const noEllipsis = pageCount <= 7;\n const onlyLeadingEllipsis = !noEllipsis && currentPage < 5;\n const onlyTrailingEllipsis = !noEllipsis && pageCount - currentPage <= 3;\n\n useEffect(() => {\n if (pageCount < 1) return;\n if (noEllipsis) {\n setListedEntries(\n Array(pageCount)\n .fill(null)\n .map((_, i) => i + 1),\n );\n } else if (onlyLeadingEllipsis) {\n setListedEntries([1, 2, 3, 4, 5, '…', pageCount]);\n } else if (onlyTrailingEllipsis) {\n setListedEntries([\n 1,\n '…',\n pageCount - 4,\n pageCount - 3,\n pageCount - 2,\n pageCount - 1,\n pageCount,\n ]);\n } else {\n // leading and trailing ellipsis\n setListedEntries([\n 1,\n '…',\n currentPage - 1,\n currentPage,\n currentPage + 1,\n '…',\n pageCount,\n ]);\n }\n }, [\n noEllipsis,\n onlyLeadingEllipsis,\n onlyTrailingEllipsis,\n currentPage,\n pageCount,\n ]);\n\n if (pageCount < 1) {\n return null;\n }\n\n return (\n <nav\n className={classNames('eds-pagination', className)}\n aria-label=\"Paginering\"\n {...rest}\n >\n {resultsPerPage && numberOfResults && (\n <div className=\"eds-pagination__results\">\n {onResultsPerPageChange && (\n <>\n <Label as=\"p\" aria-hidden=\"true\">\n {showNumberOfResultsLabel}\n </Label>\n <OverflowMenu\n className=\"eds-pagination__results__change-number-of-results\"\n buttonIcon={\n <span className=\"eds-pagination__results__change-number-of-results__content\">\n {resultsPerPage}{' '}\n <DownArrowIcon\n className=\"eds-pagination__results__change-number-of-results__content__arrow\"\n aria-hidden=\"true\"\n />\n </span>\n }\n aria-label={changeNumberOfResultsLabelForScreenreader}\n placement=\"bottom-end\"\n >\n {resultsPerPageOptions.map((option: number, key: number) => (\n <OverflowMenuItem\n key={key}\n onSelect={() => onResultsPerPageChange(option)}\n >\n {option}\n </OverflowMenuItem>\n ))}\n </OverflowMenu>\n </>\n )}\n <Label as=\"p\">\n {showingResultsLabel(\n (currentPage - 1) * resultsPerPage + 1,\n currentPage * resultsPerPage > numberOfResults\n ? numberOfResults\n : currentPage * resultsPerPage,\n numberOfResults,\n )}\n </Label>\n </div>\n )}\n <div className=\"eds-pagination__controls\">\n {!hidePrevButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage - 1)}\n aria-label={previousPageLabel}\n aria-describedby={paginationId}\n disabled={isFirstPostSelected}\n >\n <LeftArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {listedEntries.map((entry, index) =>\n entry === '…' ? (\n <Ellipsis key={`ellipsis-${index}`} />\n ) : (\n <PaginationPage\n selected={entry === currentPage}\n onClick={() => onPageChange(entry)}\n aria-label={`${pageLabel(entry)}${\n entry === pageCount ? lastPageLabelForScreenreader : ''\n }`}\n aria-describedby={\n entry !== currentPage ? paginationId : undefined\n }\n key={entry}\n >\n {entry}\n </PaginationPage>\n ),\n )}\n {!hideNextButton && (\n <PaginationPage\n onClick={() => onPageChange(currentPage + 1)}\n aria-label={nextPageLabel}\n aria-describedby={paginationId}\n disabled={isLastPostSelected}\n >\n <RightArrowIcon aria-hidden=\"true\" />\n </PaginationPage>\n )}\n {showInput && (\n <PaginationInput\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={onPageChange}\n label={inputLabel}\n />\n )}\n </div>\n <VisuallyHidden id={paginationId}>\n {currentPageLabelForScreenreader} {currentPage}\n </VisuallyHidden>\n </nav>\n );\n};\n\nconst Ellipsis = () => (\n <span className=\"eds-pagination__controls__page__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './SideNavigation.scss';\n\nexport type SideNavigationProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse på menyen\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\nconst SideNavigationBase = ({\n className,\n children,\n size = 'medium',\n ...rest\n}: SideNavigationProps) => {\n if (!children || !React.Children.count(children)) {\n return null;\n }\n return (\n <ul\n className={classNames(\n 'eds-side-navigation',\n { 'eds-side-navigation--small': size === 'small' },\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n};\n\nexport const SideNavigation = Object.assign(SideNavigationBase, {\n __IS_ENTUR_MENU__: true as const,\n});\n","import { useEffect, useState } from 'react';\n\nexport const useShowDelayedLabel = (isCollapsed: boolean): [boolean] => {\n const [showLabel, setShowLabel] = useState(true);\n const hideDelay = 50;\n const showDelay = 200;\n useEffect(() => {\n if (isCollapsed) {\n setTimeout(() => {\n setShowLabel(false);\n }, hideDelay);\n }\n if (!isCollapsed) {\n setTimeout(() => {\n setShowLabel(true);\n }, showDelay);\n }\n return () => undefined;\n }, [isCollapsed]);\n return [showLabel];\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nfunction isActiveRecursively(child: any): boolean {\n if (!child.props) {\n return false;\n }\n if (child.props.active) {\n return true;\n }\n if (!child.props.children) {\n return false;\n }\n\n return React.Children.toArray(child.props.children).some(child =>\n isActiveRecursively(child),\n );\n}\n\ntype BaseSideNavigationItemOwnProps = {\n active?: boolean;\n as?: 'a' | 'button' | React.ElementType;\n className?: string;\n icon?: React.ReactNode;\n children: React.ReactNode;\n subMenu?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type BaseSideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementBaseItem,\n> = PolymorphicComponentProps<T, BaseSideNavigationItemOwnProps>;\n\nconst defaultElementBaseItem = 'a';\n\nconst BaseSideNavigationItem: <\n E extends React.ElementType = typeof defaultElementBaseItem,\n>(\n props: BaseSideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementBaseItem>(\n {\n className,\n active = false,\n subMenu,\n icon,\n children,\n as,\n ...rest\n }: BaseSideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementBaseItem;\n const { isCollapsed } = useSideNavigationContext();\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n return (\n <li className={classNames('eds-side-navigation__item', className)}>\n <Element\n className={classNames('eds-side-navigation__click-target', {\n 'eds-side-navigation__click-target--active': active,\n })}\n aria-label={isCollapsed ? children : undefined}\n aria-current={active ? 'page' : undefined}\n ref={ref}\n {...rest}\n >\n {icon}\n {showLabel && children}\n </Element>\n {subMenu}\n </li>\n );\n },\n);\n\ntype DisabledSideNavigationItemProps = {\n children: React.ReactNode;\n [key: string]: any;\n};\nconst DisabledSideNavigationItem = React.forwardRef<\n HTMLButtonElement,\n DisabledSideNavigationItemProps\n>(({ children, ...rest }, ref: React.Ref<HTMLButtonElement>) => (\n <BaseSideNavigationItem\n as=\"button\"\n disabled={true}\n aria-disabled={true}\n ref={ref}\n type=\"button\"\n {...rest}\n >\n {children}\n </BaseSideNavigationItem>\n));\n\nexport type SideNavigationItemOwnProps = {\n /** Om meny-elementet er det som er aktivt */\n active?: boolean;\n /** HTML-elementet eller React-komponenten som rendres */\n as?: 'a' | 'button' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Om meny-elementet er deaktivert */\n disabled?: boolean;\n /** Callback for når man klikker på meny-elementet */\n onClick?: (e: React.MouseEvent) => any;\n /** Sett til true om du vil tvinge alle sub-menus til å rendre barna sine. Typisk for å vise søkeresultater */\n forceExpandSubMenus?: boolean;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport type SideNavigationItemProps<\n T extends React.ElementType = typeof defaultElementItem,\n> = PolymorphicComponentProps<T, SideNavigationItemOwnProps>;\n\nconst defaultElementItem = 'a';\n\nexport const SideNavigationItem: <\n E extends React.ElementType = typeof defaultElementItem,\n>(\n props: SideNavigationItemProps<E>,\n) => React.ReactElement | null = React.forwardRef(\n <E extends React.ElementType = typeof defaultElementItem>(\n {\n active,\n disabled,\n children,\n forceExpandSubMenus,\n as,\n ...rest\n }: SideNavigationItemProps<E>,\n ref: typeof rest.ref,\n ) => {\n const Element: React.ElementType = as || defaultElementItem;\n const childrenArray = React.Children.toArray(children);\n const subMenu = childrenArray.find(\n (child: any) => child && child.type && child.type.__IS_ENTUR_MENU__,\n );\n const label = subMenu\n ? childrenArray.filter(child => child !== subMenu)\n : children;\n\n if (disabled) {\n return (\n <DisabledSideNavigationItem ref={ref} {...rest}>\n {label}\n </DisabledSideNavigationItem>\n );\n }\n\n if (!subMenu) {\n return (\n <BaseSideNavigationItem\n as={Element}\n active={active}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n }\n\n const isExpanded =\n forceExpandSubMenus ||\n isActiveRecursively({ props: { children, active } });\n\n return (\n <BaseSideNavigationItem\n active={active}\n subMenu={isExpanded && subMenu}\n aria-expanded={isExpanded}\n as={Element}\n ref={ref}\n {...rest}\n >\n {label}\n </BaseSideNavigationItem>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseExpand, ExpandArrow } from '@entur/expand';\nimport { useSideNavigationContext } from './CollapsibleSideNavigation';\nimport { useShowDelayedLabel } from './useShowDelayedLabel';\nimport { useControllableProp } from '@entur/utils';\n\nexport type SideNavigationGroupProps = {\n /** Skal menygruppen være ekspandert by default? Kun relevant om komponenten ikke er kontrollert\n * @default false\n */\n defaultOpen?: boolean;\n /** Er menyen åpen? */\n open?: boolean;\n /** Kalles når menygruppen åpnes eller lukkes */\n onToggle?: (e?: boolean) => void;\n /** Ekstra klassenavn */\n className?: string;\n /** Menyen som skal grupperes */\n children: React.ReactNode;\n /** Overskriften til menyen */\n title: React.ReactNode;\n icon?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const SideNavigationGroup = ({\n defaultOpen = false,\n open,\n onToggle,\n className,\n children,\n title,\n icon,\n ...rest\n}: SideNavigationGroupProps) => {\n const [isOpen, setOpen] = useControllableProp({\n prop: open,\n updater: onToggle,\n defaultValue: defaultOpen,\n });\n const { isCollapsed } = useSideNavigationContext();\n\n const [showLabel] = useShowDelayedLabel(isCollapsed);\n\n return (\n <div\n className={classNames('eds-side-navigation-group', className)}\n {...rest}\n >\n <button\n onClick={() => setOpen(!isOpen)}\n type=\"button\"\n className=\"eds-side-navigation-group__trigger\"\n aria-label={`${title}, utvidbar meny, ${isOpen ? 'åpen' : 'lukket'}`}\n >\n <span>\n {icon && (\n <span className=\"eds-side-navigation-group__trigger-icon\">\n {icon}\n </span>\n )}\n {showLabel && title}\n </span>\n {showLabel && (\n <ExpandArrow\n open={isOpen}\n className=\"eds-side-navigation-group__expand-icon\"\n />\n )}\n </button>\n <BaseExpand\n className=\"eds-side-navigation-group__expand-content\"\n open={isOpen}\n >\n {children}\n </BaseExpand>\n </div>\n );\n};\n","import classNames from 'classnames';\n\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport './Stepper.scss';\n\nexport type StepperProps = {\n /** Liste med steg-navn i rekkefølge. */\n steps: string[];\n /** Det nåværende steget. 0-indeksert */\n activeIndex: number;\n /** Om stepperen skal være et interaktivt-navigasjonselement eller ikke\n * @default false\n */\n interactive?: boolean;\n /** Kalles med indeksen til det klikkede steget.\n * Fungerer kun hvis Stepper-en er interaktiv */\n onStepClick?: (index: number) => void;\n /** Om stepper skal vise indeksering av hvilket trinn man er på\n * @default true\n */\n showStepperIndex?: boolean;\n /** Ekstra klassenavn. */\n className?: string;\n /** Skjermlesertekst for ordet 'steg' som i '_steg_ 1 av 3'\n * @default 'Steg'\n */\n ariaLabelStep?: string;\n /** Skjermlesertekst for ordet 'av' som i 'steg 1 _av_ 3'\n * @defaul 'av'\n */\n ariaLabelOf?: string;\n /** Skjermlesertekst for ordet fullført\n * @default 'fullført'\n */\n ariaLabelCompleted?: string;\n /** Skjermlesertekst for oppsummering av hele stepper-en\n * @default `Stegindikator med ${steps.length} steg, du er på steg ${activeIndex + 1} ${steps[activeIndex]},`\n */\n ariaLabelSummary?: string;\n [key: string]: any;\n};\n\nexport const Stepper = ({\n activeIndex,\n className,\n interactive = false,\n onStepClick,\n showStepperIndex = true,\n steps,\n ariaLabelStep = 'Steg',\n ariaLabelOf = 'av',\n ariaLabelCompleted = 'fullført',\n ariaLabelSummary = `Stegindikator med ${steps.length} steg, du er på steg ${\n activeIndex + 1\n } ${steps[activeIndex]},`,\n ...rest\n}: StepperProps) => {\n return (\n <ol\n className={classNames('eds-stepper', className)}\n aria-label={ariaLabelSummary}\n {...rest}\n >\n {steps.map((step, i) => {\n const isCurrent = i === activeIndex;\n const isInteractive = interactive && activeIndex > i;\n const Element = isInteractive ? 'button' : 'div';\n const isCompleted = activeIndex > i;\n const currentStepSummary = `${ariaLabelStep} ${i + 1} ${ariaLabelOf} ${\n steps.length\n }, ${step} ${isCompleted ? `, ${ariaLabelCompleted}` : ''}`;\n const props = isInteractive ? { onClick: () => onStepClick?.(i) } : {};\n\n return (\n <li key={step} className=\"eds-stepper__step__wrapper\">\n <Element\n className={classNames(\n 'eds-stepper__step',\n { 'eds-stepper__step--active': isCurrent },\n { 'eds-stepper__step--completed': isCompleted },\n { 'eds-stepper__step--interactive': isInteractive },\n )}\n aria-current={isCurrent ? 'step' : undefined}\n type={Element === 'button' ? 'button' : undefined}\n {...props}\n >\n <div className=\"eds-stepper__step__line\" aria-hidden={true} />\n <span className=\"eds-stepper__step__label\" aria-hidden={true}>\n {showStepperIndex && i + 1 + '.'} {step}\n </span>\n <VisuallyHidden>{currentStepSummary}</VisuallyHidden>\n </Element>\n </li>\n );\n })}\n </ol>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport './TopNavigationItem.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TopNavigationItemOwnProps = {\n /** Om komponenten vises som valgt eller ikke\n * @default false\n */\n active?: boolean;\n /** Tekste som vises */\n children: React.ReactNode;\n /** HTML-elementet eller React-komponenten som lager komponenten\n * @default 'a'\n */\n as?: 'a' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type TopNavigationItemProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, TopNavigationItemOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const TopNavigationItem = <\n E extends React.ElementType = typeof defaultElement,\n>({\n active = false,\n className,\n as,\n ...rest\n}: TopNavigationItemProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n return (\n <Element\n className={classNames([\n 'eds-top-navigation-item',\n className,\n { 'eds-top-navigation-item--active': active },\n ])}\n {...rest}\n />\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles(\n 'menu',\n 'expand',\n 'icons',\n 'typography',\n 'button',\n 'layout',\n 'a11y',\n);\n\nexport * from './BreadcrumbNavigation';\nexport * from './BreadcrumbItem';\nexport * from './CollapsibleSideNavigation';\nexport * from './Logo';\nexport * from './OverflowMenu';\nexport * from './Pagination';\nexport * from './SideNavigation';\nexport * from './SideNavigationItem';\nexport * from './SideNavigationGroup';\nexport * from './Stepper';\nexport * from './TopNavigationItem';\n"],"names":["defaultElement","pageCount","child"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/menu",
3
- "version": "6.3.1",
3
+ "version": "7.0.0-next.1",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/menu.cjs.js",
6
6
  "module": "dist/menu.esm.js",
@@ -22,24 +22,24 @@
22
22
  "test": "jest"
23
23
  },
24
24
  "peerDependencies": {
25
- "react": ">=16.8.0",
26
- "react-dom": ">=16.8.0"
25
+ "react": ">=18.0.0",
26
+ "react-dom": ">=18.0.0"
27
27
  },
28
28
  "dependencies": {
29
- "@entur/a11y": "^0.2.113",
30
- "@entur/button": "^4.0.11",
31
- "@entur/expand": "^3.7.12",
32
- "@entur/icons": "^9.0.4",
33
- "@entur/tokens": "^3.24.0",
34
- "@entur/tooltip": "^5.3.16",
35
- "@entur/typography": "^2.1.12",
36
- "@entur/utils": "^0.13.6",
29
+ "@entur/a11y": "^1.0.0-next.1",
30
+ "@entur/button": "^5.0.0-next.1",
31
+ "@entur/expand": "^4.0.0-next.1",
32
+ "@entur/icons": "^10.0.0-next.1",
33
+ "@entur/tokens": "^4.0.0-next.0",
34
+ "@entur/tooltip": "^6.0.0-next.1",
35
+ "@entur/typography": "^3.0.0-next.1",
36
+ "@entur/utils": "^1.0.0-next.1",
37
37
  "@floating-ui/react": "^0.26.28",
38
38
  "classnames": "^2.5.1"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@testing-library/jest-dom": "^5.17.0",
42
- "@testing-library/react": "^10.4.9",
42
+ "@testing-library/react": "^16.3.0",
43
43
  "@testing-library/user-event": "14.6.1",
44
44
  "@vitejs/plugin-react": "^5.0.1",
45
45
  "jest": "^29.0.0",
@@ -49,5 +49,16 @@
49
49
  "vite": "^7.3.2",
50
50
  "vite-plugin-dts": "^4.5.4"
51
51
  },
52
- "gitHead": "801efcdaddd24c63ea7b9198ffe8902cac9477ab"
52
+ "exports": {
53
+ ".": {
54
+ "types": "./dist/index.d.ts",
55
+ "import": "./dist/menu.esm.js",
56
+ "require": "./dist/menu.cjs.js",
57
+ "default": "./dist/menu.esm.js"
58
+ },
59
+ "./styles": "./dist/styles.css",
60
+ "./dist/styles.css": "./dist/styles.css",
61
+ "./package.json": "./package.json"
62
+ },
63
+ "gitHead": "0696d63a328007af9797bc57b63c8e1c65ecfa5a"
53
64
  }