@entur/layout 3.4.2 → 3.6.0

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.
@@ -26,12 +26,12 @@ const Grid = React.forwardRef(
26
26
  ...rest
27
27
  }, ref) => {
28
28
  const Element = as || defaultElement;
29
- const resolvedTemplateColumns = useResponsiveValue.useResponsiveValue(templateColumns) ?? "repeat(12, 1fr)";
29
+ const resolvedTemplateColumns = useResponsiveValue.useResponsiveValue(templateColumns);
30
30
  const resolvedTemplateRows = useResponsiveValue.useResponsiveValue(templateRows);
31
31
  const resolvedGap = useResponsiveValue.useResponsiveValue(gap);
32
32
  const resolvedRowGap = useResponsiveValue.useResponsiveValue(rowGap);
33
33
  const resolvedColumnGap = useResponsiveValue.useResponsiveValue(columnGap);
34
- const resolvedAutoFlow = useResponsiveValue.useResponsiveValue(autoFlow) ?? "row";
34
+ const resolvedAutoFlow = useResponsiveValue.useResponsiveValue(autoFlow);
35
35
  const resolvedAlign = useResponsiveValue.useResponsiveValue(align);
36
36
  const resolvedJustify = useResponsiveValue.useResponsiveValue(justify);
37
37
  const resolvedAlignContent = useResponsiveValue.useResponsiveValue(alignContent);
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.cjs","sources":["../../../../src/beta/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport { getSpacingValue } from '../LayoutWrapper/utils';\nimport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\nimport classNames from 'classnames';\n\nimport './Grid.scss';\n\ntype AlignItems = React.CSSProperties['alignItems'];\ntype JustifyContent = React.CSSProperties['justifyContent'];\ntype AlignContent = React.CSSProperties['alignContent'];\n\nexport type GridOwnProps = {\n /** CSS grid-template-columns value (supports responsive objects)\n * @default \"repeat(12, 1fr)\"\n */\n templateColumns?: string | ResponsiveValue<string>;\n /** Spacing between grid items (supports responsive objects)\n * @default \"m\"\n */\n gap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Vertical spacing between grid rows (supports responsive objects) */\n rowGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Horizontal spacing between grid columns (supports responsive objects) */\n columnGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** CSS grid-template-rows value (supports responsive objects) */\n templateRows?: string | ResponsiveValue<string>;\n /** CSS grid-auto-flow value (supports responsive objects)\n * @default \"row\"\n */\n autoFlow?:\n | 'row'\n | 'column'\n | 'dense'\n | 'row dense'\n | 'column dense'\n | ResponsiveValue<\n 'row' | 'column' | 'dense' | 'row dense' | 'column dense'\n >;\n /** CSS align-items value (supports responsive objects) */\n align?: AlignItems | ResponsiveValue<AlignItems>;\n /** CSS justify-content value (supports responsive objects) */\n justify?: JustifyContent | ResponsiveValue<JustifyContent>;\n /** CSS align-content value (supports responsive objects) */\n alignContent?: AlignContent | ResponsiveValue<AlignContent>;\n /** The height of the grid container */\n height?: string;\n /** HTML element or React component used to render the Grid\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Grid container */\n children?: React.ReactNode;\n};\n\nexport type GridProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, GridOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Grid = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n templateColumns,\n templateRows,\n gap = 'm',\n rowGap,\n columnGap,\n autoFlow = 'row',\n align,\n justify,\n alignContent,\n height,\n as,\n className,\n children,\n style,\n ...rest\n }: GridProps<E>,\n ref?: React.Ref<Element>,\n ): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedTemplateColumns =\n useResponsiveValue(templateColumns) ?? 'repeat(12, 1fr)';\n const resolvedTemplateRows = useResponsiveValue(templateRows);\n const resolvedGap = useResponsiveValue(gap);\n const resolvedRowGap = useResponsiveValue(rowGap);\n const resolvedColumnGap = useResponsiveValue(columnGap);\n const resolvedAutoFlow = useResponsiveValue(autoFlow) ?? 'row';\n const resolvedAlign = useResponsiveValue(align);\n const resolvedJustify = useResponsiveValue(justify);\n const resolvedAlignContent = useResponsiveValue(alignContent);\n\n const gridStyle: React.CSSProperties = {\n ...(resolvedTemplateColumns && {\n '--grid-template-columns': resolvedTemplateColumns,\n }),\n ...(resolvedTemplateRows && {\n '--grid-template-rows': resolvedTemplateRows,\n }),\n ...(resolvedAutoFlow && {\n '--grid-auto-flow': resolvedAutoFlow,\n }),\n ...(resolvedAlign && {\n '--grid-align-items': resolvedAlign,\n }),\n ...(resolvedJustify && {\n '--grid-justify-content': resolvedJustify,\n }),\n ...(resolvedAlignContent && {\n '--grid-align-content': resolvedAlignContent,\n }),\n ...(resolvedGap && {\n '--grid-gap': getSpacingValue(resolvedGap),\n }),\n ...(resolvedRowGap && {\n '--grid-row-gap': getSpacingValue(resolvedRowGap),\n }),\n ...(resolvedColumnGap && {\n '--grid-column-gap': getSpacingValue(resolvedColumnGap),\n }),\n ...(height && {\n '--grid-height': height,\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-grid', className)}\n style={gridStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n"],"names":["useResponsiveValue","getSpacingValue","jsx"],"mappings":";;;;;;;;AA6DA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACgB;AAChB,UAAM,UAA6B,MAAM;AAEzC,UAAM,0BACJA,mBAAAA,mBAAmB,eAAe,KAAK;AACzC,UAAM,uBAAuBA,mBAAAA,mBAAmB,YAAY;AAC5D,UAAM,cAAcA,mBAAAA,mBAAmB,GAAG;AAC1C,UAAM,iBAAiBA,mBAAAA,mBAAmB,MAAM;AAChD,UAAM,oBAAoBA,mBAAAA,mBAAmB,SAAS;AACtD,UAAM,mBAAmBA,mBAAAA,mBAAmB,QAAQ,KAAK;AACzD,UAAM,gBAAgBA,mBAAAA,mBAAmB,KAAK;AAC9C,UAAM,kBAAkBA,mBAAAA,mBAAmB,OAAO;AAClD,UAAM,uBAAuBA,mBAAAA,mBAAmB,YAAY;AAE5D,UAAM,YAAiC;AAAA,MACrC,GAAI,2BAA2B;AAAA,QAC7B,2BAA2B;AAAA,MAAA;AAAA,MAE7B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,oBAAoB;AAAA,QACtB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,GAAI,iBAAiB;AAAA,QACnB,sBAAsB;AAAA,MAAA;AAAA,MAExB,GAAI,mBAAmB;AAAA,QACrB,0BAA0B;AAAA,MAAA;AAAA,MAE5B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,eAAe;AAAA,QACjB,cAAcC,MAAAA,gBAAgB,WAAW;AAAA,MAAA;AAAA,MAE3C,GAAI,kBAAkB;AAAA,QACpB,kBAAkBA,MAAAA,gBAAgB,cAAc;AAAA,MAAA;AAAA,MAElD,GAAI,qBAAqB;AAAA,QACvB,qBAAqBA,MAAAA,gBAAgB,iBAAiB;AAAA,MAAA;AAAA,MAExD,GAAI,UAAU;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,MAEnB,GAAG;AAAA,IAAA;AAGL,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,mBAAmB,SAAS;AAAA,QAClD,OAAO;AAAA,QACN,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;;"}
1
+ {"version":3,"file":"Grid.cjs","sources":["../../../../src/beta/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport { getSpacingValue } from '../LayoutWrapper/utils';\nimport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\nimport classNames from 'classnames';\n\nimport './Grid.scss';\n\ntype AlignItems = React.CSSProperties['alignItems'];\ntype JustifyContent = React.CSSProperties['justifyContent'];\ntype AlignContent = React.CSSProperties['alignContent'];\n\nexport type GridOwnProps = {\n /** CSS grid-template-columns value (supports responsive objects)\n * @default \"repeat(12, 1fr)\"\n */\n templateColumns?: string | ResponsiveValue<string>;\n /** Spacing between grid items (supports responsive objects)\n * @default \"m\"\n */\n gap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Vertical spacing between grid rows (supports responsive objects) */\n rowGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Horizontal spacing between grid columns (supports responsive objects) */\n columnGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** CSS grid-template-rows value (supports responsive objects) */\n templateRows?: string | ResponsiveValue<string>;\n /** CSS grid-auto-flow value (supports responsive objects)\n * @default \"row\"\n */\n autoFlow?:\n | 'row'\n | 'column'\n | 'dense'\n | 'row dense'\n | 'column dense'\n | ResponsiveValue<\n 'row' | 'column' | 'dense' | 'row dense' | 'column dense'\n >;\n /** CSS align-items value (supports responsive objects) */\n align?: AlignItems | ResponsiveValue<AlignItems>;\n /** CSS justify-content value (supports responsive objects) */\n justify?: JustifyContent | ResponsiveValue<JustifyContent>;\n /** CSS align-content value (supports responsive objects) */\n alignContent?: AlignContent | ResponsiveValue<AlignContent>;\n /** The height of the grid container */\n height?: string;\n /** HTML element or React component used to render the Grid\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Grid container */\n children?: React.ReactNode;\n};\n\nexport type GridProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, GridOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Grid = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n templateColumns,\n templateRows,\n gap = 'm',\n rowGap,\n columnGap,\n autoFlow = 'row',\n align,\n justify,\n alignContent,\n height,\n as,\n className,\n children,\n style,\n ...rest\n }: GridProps<E>,\n ref?: React.Ref<Element>,\n ): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedTemplateColumns = useResponsiveValue(templateColumns);\n const resolvedTemplateRows = useResponsiveValue(templateRows);\n const resolvedGap = useResponsiveValue(gap);\n const resolvedRowGap = useResponsiveValue(rowGap);\n const resolvedColumnGap = useResponsiveValue(columnGap);\n const resolvedAutoFlow = useResponsiveValue(autoFlow);\n const resolvedAlign = useResponsiveValue(align);\n const resolvedJustify = useResponsiveValue(justify);\n const resolvedAlignContent = useResponsiveValue(alignContent);\n\n const gridStyle: React.CSSProperties = {\n ...(resolvedTemplateColumns && {\n '--grid-template-columns': resolvedTemplateColumns,\n }),\n ...(resolvedTemplateRows && {\n '--grid-template-rows': resolvedTemplateRows,\n }),\n ...(resolvedAutoFlow && {\n '--grid-auto-flow': resolvedAutoFlow,\n }),\n ...(resolvedAlign && {\n '--grid-align-items': resolvedAlign,\n }),\n ...(resolvedJustify && {\n '--grid-justify-content': resolvedJustify,\n }),\n ...(resolvedAlignContent && {\n '--grid-align-content': resolvedAlignContent,\n }),\n ...(resolvedGap && {\n '--grid-gap': getSpacingValue(resolvedGap),\n }),\n ...(resolvedRowGap && {\n '--grid-row-gap': getSpacingValue(resolvedRowGap),\n }),\n ...(resolvedColumnGap && {\n '--grid-column-gap': getSpacingValue(resolvedColumnGap),\n }),\n ...(height && {\n '--grid-height': height,\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-grid', className)}\n style={gridStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n"],"names":["useResponsiveValue","getSpacingValue","jsx"],"mappings":";;;;;;;;AA6DA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACgB;AAChB,UAAM,UAA6B,MAAM;AAEzC,UAAM,0BAA0BA,mBAAAA,mBAAmB,eAAe;AAClE,UAAM,uBAAuBA,mBAAAA,mBAAmB,YAAY;AAC5D,UAAM,cAAcA,mBAAAA,mBAAmB,GAAG;AAC1C,UAAM,iBAAiBA,mBAAAA,mBAAmB,MAAM;AAChD,UAAM,oBAAoBA,mBAAAA,mBAAmB,SAAS;AACtD,UAAM,mBAAmBA,mBAAAA,mBAAmB,QAAQ;AACpD,UAAM,gBAAgBA,mBAAAA,mBAAmB,KAAK;AAC9C,UAAM,kBAAkBA,mBAAAA,mBAAmB,OAAO;AAClD,UAAM,uBAAuBA,mBAAAA,mBAAmB,YAAY;AAE5D,UAAM,YAAiC;AAAA,MACrC,GAAI,2BAA2B;AAAA,QAC7B,2BAA2B;AAAA,MAAA;AAAA,MAE7B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,oBAAoB;AAAA,QACtB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,GAAI,iBAAiB;AAAA,QACnB,sBAAsB;AAAA,MAAA;AAAA,MAExB,GAAI,mBAAmB;AAAA,QACrB,0BAA0B;AAAA,MAAA;AAAA,MAE5B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,eAAe;AAAA,QACjB,cAAcC,MAAAA,gBAAgB,WAAW;AAAA,MAAA;AAAA,MAE3C,GAAI,kBAAkB;AAAA,QACpB,kBAAkBA,MAAAA,gBAAgB,cAAc;AAAA,MAAA;AAAA,MAElD,GAAI,qBAAqB;AAAA,QACvB,qBAAqBA,MAAAA,gBAAgB,iBAAiB;AAAA,MAAA;AAAA,MAExD,GAAI,UAAU;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,MAEnB,GAAG;AAAA,IAAA;AAGL,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,mBAAmB,SAAS;AAAA,QAClD,OAAO;AAAA,QACN,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutWrapper.cjs","sources":["../../../../src/beta/LayoutWrapper/LayoutWrapper.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport { DEFAULT_BREAKPOINTS, type Breakpoints } from './utils';\n\nexport type LayoutValues = {\n breakpoints: Breakpoints;\n};\n\nconst LayoutContext = createContext<LayoutValues | null>(null);\n\nexport type LayoutWrapperProps = {\n /** Custom breakpoint values to override defaults */\n breakpoints?: Partial<Breakpoints>;\n /** Children components that can use layout values */\n children: React.ReactNode;\n};\n\nexport const LayoutWrapper = ({\n breakpoints: customBreakpoints,\n children,\n}: LayoutWrapperProps): JSX.Element => {\n const breakpoints = useMemo<Breakpoints>(\n () => ({\n ...DEFAULT_BREAKPOINTS,\n ...customBreakpoints,\n }),\n [customBreakpoints],\n );\n\n const layoutValues = useMemo<LayoutValues>(\n () => ({\n breakpoints,\n }),\n [breakpoints],\n );\n\n return (\n <LayoutContext.Provider value={layoutValues}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nexport const useLayoutContext = (): LayoutValues | null => {\n return useContext(LayoutContext);\n};\n"],"names":["createContext","useMemo","DEFAULT_BREAKPOINTS","useContext"],"mappings":";;;;;AAOA,MAAM,gBAAgBA,MAAAA,cAAmC,IAAI;AAStD,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb;AACF,MAAuC;AACrC,QAAM,cAAcC,MAAAA;AAAAA,IAClB,OAAO;AAAA,MACL,GAAGC,MAAAA;AAAAA,MACH,GAAG;AAAA,IAAA;AAAA,IAEL,CAAC,iBAAiB;AAAA,EAAA;AAGpB,QAAM,eAAeD,MAAAA;AAAAA,IACnB,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,IAEF,CAAC,WAAW;AAAA,EAAA;AAGd,wCACG,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;AAEO,MAAM,mBAAmB,MAA2B;AACzD,SAAOE,MAAAA,WAAW,aAAa;AACjC;;;"}
1
+ {"version":3,"file":"LayoutWrapper.cjs","sources":["../../../../src/beta/LayoutWrapper/LayoutWrapper.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport { type Breakpoints, DEFAULT_BREAKPOINTS } from './utils';\n\nexport type LayoutValues = {\n breakpoints: Breakpoints;\n};\n\nconst LayoutContext = createContext<LayoutValues | null>(null);\n\nexport type LayoutWrapperProps = {\n /** Custom breakpoint values to override defaults */\n breakpoints?: Partial<Breakpoints>;\n /** Children components that can use layout values */\n children: React.ReactNode;\n};\n\nexport const LayoutWrapper = ({\n breakpoints: customBreakpoints,\n children,\n}: LayoutWrapperProps): JSX.Element => {\n const breakpoints = useMemo<Breakpoints>(\n () => ({\n ...DEFAULT_BREAKPOINTS,\n ...customBreakpoints,\n }),\n [customBreakpoints],\n );\n\n const layoutValues = useMemo<LayoutValues>(\n () => ({\n breakpoints,\n }),\n [breakpoints],\n );\n\n return (\n <LayoutContext.Provider value={layoutValues}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nexport const useLayoutContext = (): LayoutValues | null => {\n return useContext(LayoutContext);\n};\n"],"names":["createContext","useMemo","DEFAULT_BREAKPOINTS","useContext"],"mappings":";;;;;AAOA,MAAM,gBAAgBA,MAAAA,cAAmC,IAAI;AAStD,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb;AACF,MAAuC;AACrC,QAAM,cAAcC,MAAAA;AAAAA,IAClB,OAAO;AAAA,MACL,GAAGC,MAAAA;AAAAA,MACH,GAAG;AAAA,IAAA;AAAA,IAEL,CAAC,iBAAiB;AAAA,EAAA;AAGpB,QAAM,eAAeD,MAAAA;AAAAA,IACnB,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,IAEF,CAAC,WAAW;AAAA,EAAA;AAGd,wCACG,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;AAEO,MAAM,mBAAmB,MAA2B;AACzD,SAAOE,MAAAA,WAAW,aAAa;AACjC;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutValues.cjs","sources":["../../../../src/beta/LayoutWrapper/useLayoutValues.ts"],"sourcesContent":["import { DEFAULT_BREAKPOINTS } from './utils';\nimport { useLayoutContext, type LayoutValues } from './LayoutWrapper';\n\nexport const useLayoutValues = (): LayoutValues => {\n const context = useLayoutContext();\n\n if (context) {\n return context;\n }\n\n return {\n breakpoints: DEFAULT_BREAKPOINTS,\n };\n};\n"],"names":["useLayoutContext","DEFAULT_BREAKPOINTS"],"mappings":";;;;AAGO,MAAM,kBAAkB,MAAoB;AACjD,QAAM,UAAUA,cAAAA,iBAAA;AAEhB,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,aAAaC,MAAAA;AAAAA,EAAA;AAEjB;;"}
1
+ {"version":3,"file":"useLayoutValues.cjs","sources":["../../../../src/beta/LayoutWrapper/useLayoutValues.ts"],"sourcesContent":["import { DEFAULT_BREAKPOINTS } from './utils';\nimport { type LayoutValues, useLayoutContext } from './LayoutWrapper';\n\nexport const useLayoutValues = (): LayoutValues => {\n const context = useLayoutContext();\n\n if (context) {\n return context;\n }\n\n return {\n breakpoints: DEFAULT_BREAKPOINTS,\n };\n};\n"],"names":["useLayoutContext","DEFAULT_BREAKPOINTS"],"mappings":";;;;AAGO,MAAM,kBAAkB,MAAoB;AACjD,QAAM,UAAUA,cAAAA,iBAAA;AAEhB,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,aAAaC,MAAAA;AAAAA,EAAA;AAEjB;;"}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  ;/* empty css */
4
- const index = require("./Grid/index.cjs");
5
- const index$1 = require("./Flex/index.cjs");
4
+ const index$1 = require("./Grid/index.cjs");
5
+ const index = require("./Flex/index.cjs");
6
6
  const index$2 = require("./templates/index.cjs");
7
+ const FlexSpacer = require("./Flex/FlexSpacer.cjs");
7
8
  const GridItem = require("./Grid/GridItem.cjs");
8
9
  const LayoutWrapper = require("./LayoutWrapper/LayoutWrapper.cjs");
9
10
  const useLayoutValues = require("./LayoutWrapper/useLayoutValues.cjs");
10
- const FlexSpacer = require("./Flex/FlexSpacer.cjs");
11
- exports.Grid = index.GridComponent;
12
- exports.Flex = index$1.FlexComponent;
11
+ exports.Grid = index$1.Grid;
12
+ exports.Flex = index.Flex;
13
13
  exports.Template = index$2.Template;
14
+ exports.FlexSpacer = FlexSpacer.FlexSpacer;
14
15
  exports.GridItem = GridItem.GridItem;
15
16
  exports.LayoutWrapper = LayoutWrapper.LayoutWrapper;
16
17
  exports.useLayoutValues = useLayoutValues.useLayoutValues;
17
- exports.FlexSpacer = FlexSpacer.FlexSpacer;
18
18
  //# sourceMappingURL=index.cjs.map
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const classNames = require("classnames");
6
- const Contrast = require("../Contrast.cjs");
6
+ const icons = require("@entur/icons");
7
7
  const index$1 = require("../Flex/index.cjs");
8
8
  const index = require("../Grid/index.cjs");
9
9
  ;/* empty css */
@@ -25,8 +25,17 @@ const SidebarUser = React.forwardRef(
25
25
  );
26
26
  const SidebarData = React.forwardRef(
27
27
  ({ children, as, ...rest }, ref) => {
28
- const Element = as || defaultSectionElement;
29
- return /* @__PURE__ */ jsxRuntime.jsx(Element, { ref, ...rest, children });
28
+ return /* @__PURE__ */ jsxRuntime.jsx(
29
+ index$1.Flex,
30
+ {
31
+ ref,
32
+ as: as || defaultSectionElement,
33
+ direction: "column",
34
+ gap: "s",
35
+ ...rest,
36
+ children
37
+ }
38
+ );
30
39
  }
31
40
  );
32
41
  const SidebarNavigation = React.forwardRef(
@@ -60,35 +69,88 @@ const SidebarFooter = React.forwardRef(
60
69
  );
61
70
  }
62
71
  );
72
+ const CollapseToggle = ({ isCollapsed, onToggle, openLabel, closeLabel }) => /* @__PURE__ */ jsxRuntime.jsx(
73
+ "button",
74
+ {
75
+ type: "button",
76
+ className: "eds-layout-template-sidebar__collapse-toggle",
77
+ onClick: onToggle,
78
+ "aria-expanded": !isCollapsed,
79
+ "aria-label": isCollapsed ? openLabel : closeLabel,
80
+ children: isCollapsed ? /* @__PURE__ */ jsxRuntime.jsx(icons.RightArrowIcon, { size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(icons.LeftArrowIcon, { size: 16 })
81
+ }
82
+ );
63
83
  const SidebarRoot = React.forwardRef(
64
84
  ({
65
85
  children,
66
86
  className,
67
87
  style,
68
88
  contrast = true,
89
+ collapsed,
90
+ onCollapseToggle,
91
+ openSidebarAriaLabel = "Åpne sidemeny",
92
+ closeSidebarAriaLabel = "Lukk sidemeny",
69
93
  as,
70
94
  ...rest
71
95
  }, ref) => {
72
- const WrapperElement = contrast ? Contrast.Contrast : "div";
73
- return /* @__PURE__ */ jsxRuntime.jsx(index.GridComponent.Item, { as: WrapperElement, colSpan: "1 / 2", children: /* @__PURE__ */ jsxRuntime.jsx(
74
- index$1.FlexComponent,
96
+ const collapsible = collapsed !== void 0;
97
+ const isCollapsed = collapsed ?? false;
98
+ const sidebarClassNames = classNames(
99
+ "eds-layout-template-sidebar",
75
100
  {
76
- ref,
77
- as: as || defaultSidebarElement,
78
- direction: "column",
79
- gap: "m",
80
- className: classNames(
81
- "eds-layout-template-sidebar",
82
- {
83
- "eds-layout-template-sidebar--plain": !contrast
84
- },
85
- className
86
- ),
87
- style,
88
- ...rest,
89
- children
101
+ "eds-layout-template-sidebar--plain": !contrast,
102
+ "eds-layout-template-sidebar--collapsible": collapsible,
103
+ "eds-layout-template-sidebar--collapsed": collapsible && isCollapsed
104
+ },
105
+ className
106
+ );
107
+ const wrapperClassNames = classNames(
108
+ "eds-layout-template-sidebar-wrapper",
109
+ {
110
+ "eds-contrast": contrast,
111
+ "eds-layout-template-sidebar-wrapper--collapsible": collapsible
90
112
  }
91
- ) });
113
+ );
114
+ if (!collapsible) {
115
+ return /* @__PURE__ */ jsxRuntime.jsx(index.Grid.Item, { className: wrapperClassNames, colSpan: "1 / 2", children: /* @__PURE__ */ jsxRuntime.jsx(
116
+ index$1.Flex,
117
+ {
118
+ ref,
119
+ as: as || defaultSidebarElement,
120
+ direction: "column",
121
+ gap: "m",
122
+ className: sidebarClassNames,
123
+ style,
124
+ ...rest,
125
+ children
126
+ }
127
+ ) });
128
+ }
129
+ const collapsedStyle = isCollapsed ? { ...style, "--eds-sidebar-width": "2rem" } : style;
130
+ return /* @__PURE__ */ jsxRuntime.jsxs(index.Grid.Item, { className: wrapperClassNames, colSpan: "1 / 2", children: [
131
+ /* @__PURE__ */ jsxRuntime.jsx(
132
+ index$1.Flex,
133
+ {
134
+ ref,
135
+ as: as || defaultSidebarElement,
136
+ direction: "column",
137
+ gap: "m",
138
+ className: sidebarClassNames,
139
+ style: collapsedStyle,
140
+ ...rest,
141
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "eds-layout-template-sidebar__content", children })
142
+ }
143
+ ),
144
+ onCollapseToggle && /* @__PURE__ */ jsxRuntime.jsx(
145
+ CollapseToggle,
146
+ {
147
+ isCollapsed,
148
+ onToggle: () => onCollapseToggle(!isCollapsed),
149
+ openLabel: openSidebarAriaLabel,
150
+ closeLabel: closeSidebarAriaLabel
151
+ }
152
+ )
153
+ ] });
92
154
  }
93
155
  );
94
156
  const Sidebar = Object.assign(SidebarRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.cjs","sources":["../../../../src/beta/templates/Sidebar.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Contrast } from '../../Contrast';\nimport { Flex } from '../Flex';\nimport { Grid } from '../Grid';\nimport './Sidebar.scss';\n\ntype SidebarOwnProps = {\n /** Toggle contrast styling for the sidebar */\n contrast?: boolean;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype SidebarSectionOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultSidebarElement = 'aside';\nconst defaultSectionElement = 'div';\nconst defaultNavigationElement = 'nav';\nconst defaultFooterElement = 'footer';\n\nexport type SidebarProps<\n T extends React.ElementType = typeof defaultSidebarElement,\n> = PolymorphicComponentProps<T, SidebarOwnProps>;\n\nexport type SidebarSectionProps<\n T extends React.ElementType = typeof defaultSectionElement,\n> = PolymorphicComponentProps<T, SidebarSectionOwnProps>;\n\nconst SidebarLogo = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarUser = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarData = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarNavigation = React.forwardRef(\n <E extends React.ElementType = typeof defaultNavigationElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultNavigationElement;\n return (\n <Element\n ref={ref}\n className={classNames(\n 'eds-layout-template-sidebar__navigation',\n className,\n )}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarFooter = React.forwardRef(\n <E extends React.ElementType = typeof defaultFooterElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultFooterElement;\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-template-sidebar__footer', className)}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarRoot = React.forwardRef(\n <E extends React.ElementType = typeof defaultSidebarElement>(\n {\n children,\n className,\n style,\n contrast = true,\n as,\n ...rest\n }: SidebarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const WrapperElement = contrast ? Contrast : 'div';\n return (\n <Grid.Item as={WrapperElement} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={classNames(\n 'eds-layout-template-sidebar',\n {\n 'eds-layout-template-sidebar--plain': !contrast,\n },\n className,\n )}\n style={style}\n {...rest}\n >\n {children}\n </Flex>\n </Grid.Item>\n );\n },\n);\n\nexport type SidebarComponent = typeof SidebarRoot & {\n Logo: typeof SidebarLogo;\n User: typeof SidebarUser;\n Data: typeof SidebarData;\n Navigation: typeof SidebarNavigation;\n Footer: typeof SidebarFooter;\n};\n\nexport const Sidebar: SidebarComponent = Object.assign(SidebarRoot, {\n Logo: SidebarLogo,\n User: SidebarUser,\n Data: SidebarData,\n Navigation: SidebarNavigation,\n Footer: SidebarFooter,\n});\n\nSidebar.displayName = 'Template.Portal.Sidebar';\nSidebar.Logo.displayName = 'Template.Portal.Sidebar.Logo';\nSidebar.User.displayName = 'Template.Portal.Sidebar.User';\nSidebar.Data.displayName = 'Template.Portal.Sidebar.Data';\nSidebar.Navigation.displayName = 'Template.Portal.Sidebar.Navigation';\nSidebar.Footer.displayName = 'Template.Portal.Sidebar.Footer';\n"],"names":["jsx","Contrast","Grid","Flex"],"mappings":";;;;;;;;;AAsBA,MAAM,wBAAwB;AAC9B,MAAM,wBAAwB;AAC9B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAU7B,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACEA,2BAAAA,IAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACEA,2BAAAA,IAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACEA,2BAAAA,IAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,oBAAoB,MAAM;AAAA,EAC9B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACEA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,gBAAgB,MAAM;AAAA,EAC1B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACEA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,uCAAuC,SAAS;AAAA,QACrE,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,iBAAiB,WAAWC,SAAAA,WAAW;AAC7C,0CACGC,oBAAK,MAAL,EAAU,IAAI,gBAAgB,SAAQ,SACrC,UAAAF,2BAAAA;AAAAA,MAACG,QAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAU;AAAA,QACV,KAAI;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,sCAAsC,CAAC;AAAA,UAAA;AAAA,UAEzC;AAAA,QAAA;AAAA,QAEF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AACF;AAUO,MAAM,UAA4B,OAAO,OAAO,aAAa;AAAA,EAClE,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AACV,CAAC;AAED,QAAQ,cAAc;AACtB,QAAQ,KAAK,cAAc;AAC3B,QAAQ,KAAK,cAAc;AAC3B,QAAQ,KAAK,cAAc;AAC3B,QAAQ,WAAW,cAAc;AACjC,QAAQ,OAAO,cAAc;;"}
1
+ {"version":3,"file":"Sidebar.cjs","sources":["../../../../src/beta/templates/Sidebar.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Flex } from '../Flex';\nimport { Grid } from '../Grid';\nimport './Sidebar.scss';\n\ntype SidebarOwnProps = {\n /** Toggle contrast styling for the sidebar */\n contrast?: boolean;\n /** Controlled collapsed state. When provided, the sidebar becomes\n * collapsible and a toggle button is rendered. */\n collapsed?: boolean;\n /** Callback when the collapse toggle is clicked */\n onCollapseToggle?: (collapsed: boolean) => void;\n /** aria-label for the toggle button when the sidebar is collapsed\n * @default 'Åpne sidemeny'\n */\n openSidebarAriaLabel?: string;\n /** aria-label for the toggle button when the sidebar is expanded\n * @default 'Lukk sidemeny'\n */\n closeSidebarAriaLabel?: string;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype SidebarSectionOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultSidebarElement = 'aside';\nconst defaultSectionElement = 'div';\nconst defaultNavigationElement = 'nav';\nconst defaultFooterElement = 'footer';\n\nexport type SidebarProps<\n T extends React.ElementType = typeof defaultSidebarElement,\n> = PolymorphicComponentProps<T, SidebarOwnProps>;\n\nexport type SidebarSectionProps<\n T extends React.ElementType = typeof defaultSectionElement,\n> = PolymorphicComponentProps<T, SidebarSectionOwnProps>;\n\nconst SidebarLogo = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarUser = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarData = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Flex\n ref={ref}\n as={as || defaultSectionElement}\n direction=\"column\"\n gap=\"s\"\n {...rest}\n >\n {children}\n </Flex>\n );\n },\n);\n\nconst SidebarNavigation = React.forwardRef(\n <E extends React.ElementType = typeof defaultNavigationElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultNavigationElement;\n return (\n <Element\n ref={ref}\n className={classNames(\n 'eds-layout-template-sidebar__navigation',\n className,\n )}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarFooter = React.forwardRef(\n <E extends React.ElementType = typeof defaultFooterElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultFooterElement;\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-template-sidebar__footer', className)}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst CollapseToggle: React.FC<{\n isCollapsed: boolean;\n onToggle: () => void;\n openLabel: string;\n closeLabel: string;\n}> = ({ isCollapsed, onToggle, openLabel, closeLabel }) => (\n <button\n type=\"button\"\n className=\"eds-layout-template-sidebar__collapse-toggle\"\n onClick={onToggle}\n aria-expanded={!isCollapsed}\n aria-label={isCollapsed ? openLabel : closeLabel}\n >\n {isCollapsed ? <RightArrowIcon size={16} /> : <LeftArrowIcon size={16} />}\n </button>\n);\n\nconst SidebarRoot = React.forwardRef(\n <E extends React.ElementType = typeof defaultSidebarElement>(\n {\n children,\n className,\n style,\n contrast = true,\n collapsed,\n onCollapseToggle,\n openSidebarAriaLabel = 'Åpne sidemeny',\n closeSidebarAriaLabel = 'Lukk sidemeny',\n as,\n ...rest\n }: SidebarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const collapsible = collapsed !== undefined;\n const isCollapsed = collapsed ?? false;\n\n const sidebarClassNames = classNames(\n 'eds-layout-template-sidebar',\n {\n 'eds-layout-template-sidebar--plain': !contrast,\n 'eds-layout-template-sidebar--collapsible': collapsible,\n 'eds-layout-template-sidebar--collapsed': collapsible && isCollapsed,\n },\n className,\n );\n\n const wrapperClassNames = classNames(\n 'eds-layout-template-sidebar-wrapper',\n {\n 'eds-contrast': contrast,\n 'eds-layout-template-sidebar-wrapper--collapsible': collapsible,\n },\n );\n\n if (!collapsible) {\n return (\n <Grid.Item className={wrapperClassNames} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={sidebarClassNames}\n style={style}\n {...rest}\n >\n {children}\n </Flex>\n </Grid.Item>\n );\n }\n\n const collapsedStyle = isCollapsed\n ? ({ ...style, '--eds-sidebar-width': '2rem' } as React.CSSProperties)\n : style;\n\n return (\n <Grid.Item className={wrapperClassNames} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={sidebarClassNames}\n style={collapsedStyle}\n {...rest}\n >\n <div className=\"eds-layout-template-sidebar__content\">{children}</div>\n </Flex>\n {onCollapseToggle && (\n <CollapseToggle\n isCollapsed={isCollapsed}\n onToggle={() => onCollapseToggle(!isCollapsed)}\n openLabel={openSidebarAriaLabel}\n closeLabel={closeSidebarAriaLabel}\n />\n )}\n </Grid.Item>\n );\n },\n);\n\nexport type SidebarComponent = typeof SidebarRoot & {\n Logo: typeof SidebarLogo;\n User: typeof SidebarUser;\n Data: typeof SidebarData;\n Navigation: typeof SidebarNavigation;\n Footer: typeof SidebarFooter;\n};\n\nexport const Sidebar: SidebarComponent = Object.assign(SidebarRoot, {\n Logo: SidebarLogo,\n User: SidebarUser,\n Data: SidebarData,\n Navigation: SidebarNavigation,\n Footer: SidebarFooter,\n});\n\nSidebar.displayName = 'Template.Portal.Sidebar';\nSidebar.Logo.displayName = 'Template.Portal.Sidebar.Logo';\nSidebar.User.displayName = 'Template.Portal.Sidebar.User';\nSidebar.Data.displayName = 'Template.Portal.Sidebar.Data';\nSidebar.Navigation.displayName = 'Template.Portal.Sidebar.Navigation';\nSidebar.Footer.displayName = 'Template.Portal.Sidebar.Footer';\n"],"names":["jsx","Flex","RightArrowIcon","LeftArrowIcon","Grid"],"mappings":"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"}
@@ -11,11 +11,10 @@ const defaultPortalMainElement = "main";
11
11
  const PortalRoot = React.forwardRef(
12
12
  ({ children, className, style, as, ...rest }, ref) => {
13
13
  return /* @__PURE__ */ jsxRuntime.jsx(
14
- index.GridComponent,
14
+ index.Grid,
15
15
  {
16
16
  ref,
17
17
  as,
18
- templateColumns: "var(--eds-sidebar-width, min-content) minmax(0, 1fr)",
19
18
  gap: "none",
20
19
  columnGap: "m",
21
20
  className: classNames("eds-layout-template-portal", className),
@@ -29,7 +28,7 @@ const PortalRoot = React.forwardRef(
29
28
  const PortalStatusBar = React.forwardRef(
30
29
  ({ children, className, as, ...rest }, ref) => {
31
30
  return /* @__PURE__ */ jsxRuntime.jsx(
32
- index.GridComponent.Item,
31
+ index.Grid.Item,
33
32
  {
34
33
  ref,
35
34
  as: as || defaultStatusBarElement,
@@ -46,7 +45,7 @@ const PortalStatusBar = React.forwardRef(
46
45
  const PortalMain = React.forwardRef(
47
46
  ({ children, className, style, as, ...rest }, ref) => {
48
47
  return /* @__PURE__ */ jsxRuntime.jsx(
49
- index.GridComponent.Item,
48
+ index.Grid.Item,
50
49
  {
51
50
  ref,
52
51
  as: as || defaultPortalMainElement,
@@ -1 +1 @@
1
- {"version":3,"file":"Portal.cjs","sources":["../../../../../src/beta/templates/portal/Portal.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Grid } from '../../Grid';\nimport { Sidebar, SidebarComponent } from '../Sidebar';\nimport './Portal.scss';\n\ntype PortalOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalStatusBarOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalMainOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultStatusBarElement = 'div';\nconst defaultPortalMainElement = 'main';\n\nexport type PortalProps<T extends React.ElementType = typeof Grid> =\n PolymorphicComponentProps<T, PortalOwnProps>;\n\nexport type PortalStatusBarProps<\n T extends React.ElementType = typeof defaultStatusBarElement,\n> = PolymorphicComponentProps<T, PortalStatusBarOwnProps>;\n\nexport type PortalMainProps<\n T extends React.ElementType = typeof defaultPortalMainElement,\n> = PolymorphicComponentProps<T, PortalMainOwnProps>;\n\nconst PortalRoot = React.forwardRef(\n <E extends React.ElementType = typeof Grid>(\n { children, className, style, as, ...rest }: PortalProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid\n ref={ref}\n as={as}\n templateColumns=\"var(--eds-sidebar-width, min-content) minmax(0, 1fr)\"\n gap=\"none\"\n columnGap=\"m\"\n className={classNames('eds-layout-template-portal', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid>\n );\n },\n);\n\nconst PortalStatusBar = React.forwardRef(\n <E extends React.ElementType = typeof defaultStatusBarElement>(\n { children, className, as, ...rest }: PortalStatusBarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultStatusBarElement}\n className={classNames(\n 'eds-layout-template-portal__status-bar',\n className,\n )}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nconst PortalMain = React.forwardRef(\n <E extends React.ElementType = typeof defaultPortalMainElement>(\n { children, className, style, as, ...rest }: PortalMainProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultPortalMainElement}\n colSpan=\"2 / -1\"\n className={classNames('eds-layout-template-portal__main', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nexport type PortalComponent = typeof PortalRoot & {\n StatusBar: typeof PortalStatusBar;\n Sidebar: SidebarComponent;\n Main: typeof PortalMain;\n};\n\nexport const Portal: PortalComponent = Object.assign(PortalRoot, {\n StatusBar: PortalStatusBar,\n Sidebar,\n Main: PortalMain,\n});\n\nPortal.displayName = 'Template.Portal';\nPortal.StatusBar.displayName = 'Template.Portal.StatusBar';\nPortal.Main.displayName = 'Template.Portal.Main';\n"],"names":["jsx","Grid","Sidebar"],"mappings":";;;;;;;;AAyBA,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAajC,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACEA,2BAAAA;AAAAA,MAACC,MAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,iBAAgB;AAAA,QAChB,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW,WAAW,8BAA8B,SAAS;AAAA,QAC7D;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,kBAAkB,MAAM;AAAA,EAC5B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,WACED,2BAAAA;AAAAA,MAACC,MAAAA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACED,2BAAAA;AAAAA,MAACC,MAAAA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,SAAQ;AAAA,QACR,WAAW,WAAW,oCAAoC,SAAS;AAAA,QACnE;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAQO,MAAM,SAA0B,OAAO,OAAO,YAAY;AAAA,EAC/D,WAAW;AAAA,EAAA,SACXC,QAAAA;AAAAA,EACA,MAAM;AACR,CAAC;AAED,OAAO,cAAc;AACrB,OAAO,UAAU,cAAc;AAC/B,OAAO,KAAK,cAAc;;"}
1
+ {"version":3,"file":"Portal.cjs","sources":["../../../../../src/beta/templates/portal/Portal.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Grid } from '../../Grid';\nimport { Sidebar, SidebarComponent } from '../Sidebar';\nimport './Portal.scss';\n\ntype PortalOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalStatusBarOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalMainOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultStatusBarElement = 'div';\nconst defaultPortalMainElement = 'main';\n\nexport type PortalProps<T extends React.ElementType = typeof Grid> =\n PolymorphicComponentProps<T, PortalOwnProps>;\n\nexport type PortalStatusBarProps<\n T extends React.ElementType = typeof defaultStatusBarElement,\n> = PolymorphicComponentProps<T, PortalStatusBarOwnProps>;\n\nexport type PortalMainProps<\n T extends React.ElementType = typeof defaultPortalMainElement,\n> = PolymorphicComponentProps<T, PortalMainOwnProps>;\n\nconst PortalRoot = React.forwardRef(\n <E extends React.ElementType = typeof Grid>(\n { children, className, style, as, ...rest }: PortalProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid\n ref={ref}\n as={as}\n gap=\"none\"\n columnGap=\"m\"\n className={classNames('eds-layout-template-portal', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid>\n );\n },\n);\n\nconst PortalStatusBar = React.forwardRef(\n <E extends React.ElementType = typeof defaultStatusBarElement>(\n { children, className, as, ...rest }: PortalStatusBarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultStatusBarElement}\n className={classNames(\n 'eds-layout-template-portal__status-bar',\n className,\n )}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nconst PortalMain = React.forwardRef(\n <E extends React.ElementType = typeof defaultPortalMainElement>(\n { children, className, style, as, ...rest }: PortalMainProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultPortalMainElement}\n colSpan=\"2 / -1\"\n className={classNames('eds-layout-template-portal__main', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nexport type PortalComponent = typeof PortalRoot & {\n StatusBar: typeof PortalStatusBar;\n Sidebar: SidebarComponent;\n Main: typeof PortalMain;\n};\n\nexport const Portal: PortalComponent = Object.assign(PortalRoot, {\n StatusBar: PortalStatusBar,\n Sidebar,\n Main: PortalMain,\n});\n\nPortal.displayName = 'Template.Portal';\nPortal.StatusBar.displayName = 'Template.Portal.StatusBar';\nPortal.Main.displayName = 'Template.Portal.Main';\n"],"names":["jsx","Grid","Sidebar"],"mappings":";;;;;;;;AAyBA,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAajC,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACEA,2BAAAA;AAAAA,MAACC,MAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW,WAAW,8BAA8B,SAAS;AAAA,QAC7D;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,kBAAkB,MAAM;AAAA,EAC5B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,WACED,2BAAAA;AAAAA,MAACC,MAAAA,KAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACED,2BAAAA;AAAAA,MAACC,MAAAA,KAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,SAAQ;AAAA,QACR,WAAW,WAAW,oCAAoC,SAAS;AAAA,QACnE;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAQO,MAAM,SAA0B,OAAO,OAAO,YAAY;AAAA,EAC/D,WAAW;AAAA,EAAA,SACXC,QAAAA;AAAAA,EACA,MAAM;AACR,CAAC;AAED,OAAO,cAAc;AACrB,OAAO,UAAU,cAAc;AAC/B,OAAO,KAAK,cAAc;;"}
@@ -24,12 +24,12 @@ const Grid = React.forwardRef(
24
24
  ...rest
25
25
  }, ref) => {
26
26
  const Element = as || defaultElement;
27
- const resolvedTemplateColumns = useResponsiveValue(templateColumns) ?? "repeat(12, 1fr)";
27
+ const resolvedTemplateColumns = useResponsiveValue(templateColumns);
28
28
  const resolvedTemplateRows = useResponsiveValue(templateRows);
29
29
  const resolvedGap = useResponsiveValue(gap);
30
30
  const resolvedRowGap = useResponsiveValue(rowGap);
31
31
  const resolvedColumnGap = useResponsiveValue(columnGap);
32
- const resolvedAutoFlow = useResponsiveValue(autoFlow) ?? "row";
32
+ const resolvedAutoFlow = useResponsiveValue(autoFlow);
33
33
  const resolvedAlign = useResponsiveValue(align);
34
34
  const resolvedJustify = useResponsiveValue(justify);
35
35
  const resolvedAlignContent = useResponsiveValue(alignContent);
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.mjs","sources":["../../../../src/beta/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport { getSpacingValue } from '../LayoutWrapper/utils';\nimport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\nimport classNames from 'classnames';\n\nimport './Grid.scss';\n\ntype AlignItems = React.CSSProperties['alignItems'];\ntype JustifyContent = React.CSSProperties['justifyContent'];\ntype AlignContent = React.CSSProperties['alignContent'];\n\nexport type GridOwnProps = {\n /** CSS grid-template-columns value (supports responsive objects)\n * @default \"repeat(12, 1fr)\"\n */\n templateColumns?: string | ResponsiveValue<string>;\n /** Spacing between grid items (supports responsive objects)\n * @default \"m\"\n */\n gap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Vertical spacing between grid rows (supports responsive objects) */\n rowGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Horizontal spacing between grid columns (supports responsive objects) */\n columnGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** CSS grid-template-rows value (supports responsive objects) */\n templateRows?: string | ResponsiveValue<string>;\n /** CSS grid-auto-flow value (supports responsive objects)\n * @default \"row\"\n */\n autoFlow?:\n | 'row'\n | 'column'\n | 'dense'\n | 'row dense'\n | 'column dense'\n | ResponsiveValue<\n 'row' | 'column' | 'dense' | 'row dense' | 'column dense'\n >;\n /** CSS align-items value (supports responsive objects) */\n align?: AlignItems | ResponsiveValue<AlignItems>;\n /** CSS justify-content value (supports responsive objects) */\n justify?: JustifyContent | ResponsiveValue<JustifyContent>;\n /** CSS align-content value (supports responsive objects) */\n alignContent?: AlignContent | ResponsiveValue<AlignContent>;\n /** The height of the grid container */\n height?: string;\n /** HTML element or React component used to render the Grid\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Grid container */\n children?: React.ReactNode;\n};\n\nexport type GridProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, GridOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Grid = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n templateColumns,\n templateRows,\n gap = 'm',\n rowGap,\n columnGap,\n autoFlow = 'row',\n align,\n justify,\n alignContent,\n height,\n as,\n className,\n children,\n style,\n ...rest\n }: GridProps<E>,\n ref?: React.Ref<Element>,\n ): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedTemplateColumns =\n useResponsiveValue(templateColumns) ?? 'repeat(12, 1fr)';\n const resolvedTemplateRows = useResponsiveValue(templateRows);\n const resolvedGap = useResponsiveValue(gap);\n const resolvedRowGap = useResponsiveValue(rowGap);\n const resolvedColumnGap = useResponsiveValue(columnGap);\n const resolvedAutoFlow = useResponsiveValue(autoFlow) ?? 'row';\n const resolvedAlign = useResponsiveValue(align);\n const resolvedJustify = useResponsiveValue(justify);\n const resolvedAlignContent = useResponsiveValue(alignContent);\n\n const gridStyle: React.CSSProperties = {\n ...(resolvedTemplateColumns && {\n '--grid-template-columns': resolvedTemplateColumns,\n }),\n ...(resolvedTemplateRows && {\n '--grid-template-rows': resolvedTemplateRows,\n }),\n ...(resolvedAutoFlow && {\n '--grid-auto-flow': resolvedAutoFlow,\n }),\n ...(resolvedAlign && {\n '--grid-align-items': resolvedAlign,\n }),\n ...(resolvedJustify && {\n '--grid-justify-content': resolvedJustify,\n }),\n ...(resolvedAlignContent && {\n '--grid-align-content': resolvedAlignContent,\n }),\n ...(resolvedGap && {\n '--grid-gap': getSpacingValue(resolvedGap),\n }),\n ...(resolvedRowGap && {\n '--grid-row-gap': getSpacingValue(resolvedRowGap),\n }),\n ...(resolvedColumnGap && {\n '--grid-column-gap': getSpacingValue(resolvedColumnGap),\n }),\n ...(height && {\n '--grid-height': height,\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-grid', className)}\n style={gridStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;AA6DA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACgB;AAChB,UAAM,UAA6B,MAAM;AAEzC,UAAM,0BACJ,mBAAmB,eAAe,KAAK;AACzC,UAAM,uBAAuB,mBAAmB,YAAY;AAC5D,UAAM,cAAc,mBAAmB,GAAG;AAC1C,UAAM,iBAAiB,mBAAmB,MAAM;AAChD,UAAM,oBAAoB,mBAAmB,SAAS;AACtD,UAAM,mBAAmB,mBAAmB,QAAQ,KAAK;AACzD,UAAM,gBAAgB,mBAAmB,KAAK;AAC9C,UAAM,kBAAkB,mBAAmB,OAAO;AAClD,UAAM,uBAAuB,mBAAmB,YAAY;AAE5D,UAAM,YAAiC;AAAA,MACrC,GAAI,2BAA2B;AAAA,QAC7B,2BAA2B;AAAA,MAAA;AAAA,MAE7B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,oBAAoB;AAAA,QACtB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,GAAI,iBAAiB;AAAA,QACnB,sBAAsB;AAAA,MAAA;AAAA,MAExB,GAAI,mBAAmB;AAAA,QACrB,0BAA0B;AAAA,MAAA;AAAA,MAE5B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,eAAe;AAAA,QACjB,cAAc,gBAAgB,WAAW;AAAA,MAAA;AAAA,MAE3C,GAAI,kBAAkB;AAAA,QACpB,kBAAkB,gBAAgB,cAAc;AAAA,MAAA;AAAA,MAElD,GAAI,qBAAqB;AAAA,QACvB,qBAAqB,gBAAgB,iBAAiB;AAAA,MAAA;AAAA,MAExD,GAAI,UAAU;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,MAEnB,GAAG;AAAA,IAAA;AAGL,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,mBAAmB,SAAS;AAAA,QAClD,OAAO;AAAA,QACN,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}
1
+ {"version":3,"file":"Grid.mjs","sources":["../../../../src/beta/Grid/Grid.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport { getSpacingValue } from '../LayoutWrapper/utils';\nimport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\nimport classNames from 'classnames';\n\nimport './Grid.scss';\n\ntype AlignItems = React.CSSProperties['alignItems'];\ntype JustifyContent = React.CSSProperties['justifyContent'];\ntype AlignContent = React.CSSProperties['alignContent'];\n\nexport type GridOwnProps = {\n /** CSS grid-template-columns value (supports responsive objects)\n * @default \"repeat(12, 1fr)\"\n */\n templateColumns?: string | ResponsiveValue<string>;\n /** Spacing between grid items (supports responsive objects)\n * @default \"m\"\n */\n gap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Vertical spacing between grid rows (supports responsive objects) */\n rowGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** Horizontal spacing between grid columns (supports responsive objects) */\n columnGap?: GridSpacingValue | ResponsiveValue<GridSpacingValue>;\n /** CSS grid-template-rows value (supports responsive objects) */\n templateRows?: string | ResponsiveValue<string>;\n /** CSS grid-auto-flow value (supports responsive objects)\n * @default \"row\"\n */\n autoFlow?:\n | 'row'\n | 'column'\n | 'dense'\n | 'row dense'\n | 'column dense'\n | ResponsiveValue<\n 'row' | 'column' | 'dense' | 'row dense' | 'column dense'\n >;\n /** CSS align-items value (supports responsive objects) */\n align?: AlignItems | ResponsiveValue<AlignItems>;\n /** CSS justify-content value (supports responsive objects) */\n justify?: JustifyContent | ResponsiveValue<JustifyContent>;\n /** CSS align-content value (supports responsive objects) */\n alignContent?: AlignContent | ResponsiveValue<AlignContent>;\n /** The height of the grid container */\n height?: string;\n /** HTML element or React component used to render the Grid\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Grid container */\n children?: React.ReactNode;\n};\n\nexport type GridProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, GridOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Grid = React.forwardRef(\n <E extends React.ElementType = typeof defaultElement>(\n {\n templateColumns,\n templateRows,\n gap = 'm',\n rowGap,\n columnGap,\n autoFlow = 'row',\n align,\n justify,\n alignContent,\n height,\n as,\n className,\n children,\n style,\n ...rest\n }: GridProps<E>,\n ref?: React.Ref<Element>,\n ): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedTemplateColumns = useResponsiveValue(templateColumns);\n const resolvedTemplateRows = useResponsiveValue(templateRows);\n const resolvedGap = useResponsiveValue(gap);\n const resolvedRowGap = useResponsiveValue(rowGap);\n const resolvedColumnGap = useResponsiveValue(columnGap);\n const resolvedAutoFlow = useResponsiveValue(autoFlow);\n const resolvedAlign = useResponsiveValue(align);\n const resolvedJustify = useResponsiveValue(justify);\n const resolvedAlignContent = useResponsiveValue(alignContent);\n\n const gridStyle: React.CSSProperties = {\n ...(resolvedTemplateColumns && {\n '--grid-template-columns': resolvedTemplateColumns,\n }),\n ...(resolvedTemplateRows && {\n '--grid-template-rows': resolvedTemplateRows,\n }),\n ...(resolvedAutoFlow && {\n '--grid-auto-flow': resolvedAutoFlow,\n }),\n ...(resolvedAlign && {\n '--grid-align-items': resolvedAlign,\n }),\n ...(resolvedJustify && {\n '--grid-justify-content': resolvedJustify,\n }),\n ...(resolvedAlignContent && {\n '--grid-align-content': resolvedAlignContent,\n }),\n ...(resolvedGap && {\n '--grid-gap': getSpacingValue(resolvedGap),\n }),\n ...(resolvedRowGap && {\n '--grid-row-gap': getSpacingValue(resolvedRowGap),\n }),\n ...(resolvedColumnGap && {\n '--grid-column-gap': getSpacingValue(resolvedColumnGap),\n }),\n ...(height && {\n '--grid-height': height,\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-grid', className)}\n style={gridStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;AA6DA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACgB;AAChB,UAAM,UAA6B,MAAM;AAEzC,UAAM,0BAA0B,mBAAmB,eAAe;AAClE,UAAM,uBAAuB,mBAAmB,YAAY;AAC5D,UAAM,cAAc,mBAAmB,GAAG;AAC1C,UAAM,iBAAiB,mBAAmB,MAAM;AAChD,UAAM,oBAAoB,mBAAmB,SAAS;AACtD,UAAM,mBAAmB,mBAAmB,QAAQ;AACpD,UAAM,gBAAgB,mBAAmB,KAAK;AAC9C,UAAM,kBAAkB,mBAAmB,OAAO;AAClD,UAAM,uBAAuB,mBAAmB,YAAY;AAE5D,UAAM,YAAiC;AAAA,MACrC,GAAI,2BAA2B;AAAA,QAC7B,2BAA2B;AAAA,MAAA;AAAA,MAE7B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,oBAAoB;AAAA,QACtB,oBAAoB;AAAA,MAAA;AAAA,MAEtB,GAAI,iBAAiB;AAAA,QACnB,sBAAsB;AAAA,MAAA;AAAA,MAExB,GAAI,mBAAmB;AAAA,QACrB,0BAA0B;AAAA,MAAA;AAAA,MAE5B,GAAI,wBAAwB;AAAA,QAC1B,wBAAwB;AAAA,MAAA;AAAA,MAE1B,GAAI,eAAe;AAAA,QACjB,cAAc,gBAAgB,WAAW;AAAA,MAAA;AAAA,MAE3C,GAAI,kBAAkB;AAAA,QACpB,kBAAkB,gBAAgB,cAAc;AAAA,MAAA;AAAA,MAElD,GAAI,qBAAqB;AAAA,QACvB,qBAAqB,gBAAgB,iBAAiB;AAAA,MAAA;AAAA,MAExD,GAAI,UAAU;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,MAEnB,GAAG;AAAA,IAAA;AAGL,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,mBAAmB,SAAS;AAAA,QAClD,OAAO;AAAA,QACN,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutWrapper.mjs","sources":["../../../../src/beta/LayoutWrapper/LayoutWrapper.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport { DEFAULT_BREAKPOINTS, type Breakpoints } from './utils';\n\nexport type LayoutValues = {\n breakpoints: Breakpoints;\n};\n\nconst LayoutContext = createContext<LayoutValues | null>(null);\n\nexport type LayoutWrapperProps = {\n /** Custom breakpoint values to override defaults */\n breakpoints?: Partial<Breakpoints>;\n /** Children components that can use layout values */\n children: React.ReactNode;\n};\n\nexport const LayoutWrapper = ({\n breakpoints: customBreakpoints,\n children,\n}: LayoutWrapperProps): JSX.Element => {\n const breakpoints = useMemo<Breakpoints>(\n () => ({\n ...DEFAULT_BREAKPOINTS,\n ...customBreakpoints,\n }),\n [customBreakpoints],\n );\n\n const layoutValues = useMemo<LayoutValues>(\n () => ({\n breakpoints,\n }),\n [breakpoints],\n );\n\n return (\n <LayoutContext.Provider value={layoutValues}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nexport const useLayoutContext = (): LayoutValues | null => {\n return useContext(LayoutContext);\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,gBAAgB,cAAmC,IAAI;AAStD,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb;AACF,MAAuC;AACrC,QAAM,cAAc;AAAA,IAClB,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,IAEL,CAAC,iBAAiB;AAAA,EAAA;AAGpB,QAAM,eAAe;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,IAEF,CAAC,WAAW;AAAA,EAAA;AAGd,6BACG,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;AAEO,MAAM,mBAAmB,MAA2B;AACzD,SAAO,WAAW,aAAa;AACjC;"}
1
+ {"version":3,"file":"LayoutWrapper.mjs","sources":["../../../../src/beta/LayoutWrapper/LayoutWrapper.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport { type Breakpoints, DEFAULT_BREAKPOINTS } from './utils';\n\nexport type LayoutValues = {\n breakpoints: Breakpoints;\n};\n\nconst LayoutContext = createContext<LayoutValues | null>(null);\n\nexport type LayoutWrapperProps = {\n /** Custom breakpoint values to override defaults */\n breakpoints?: Partial<Breakpoints>;\n /** Children components that can use layout values */\n children: React.ReactNode;\n};\n\nexport const LayoutWrapper = ({\n breakpoints: customBreakpoints,\n children,\n}: LayoutWrapperProps): JSX.Element => {\n const breakpoints = useMemo<Breakpoints>(\n () => ({\n ...DEFAULT_BREAKPOINTS,\n ...customBreakpoints,\n }),\n [customBreakpoints],\n );\n\n const layoutValues = useMemo<LayoutValues>(\n () => ({\n breakpoints,\n }),\n [breakpoints],\n );\n\n return (\n <LayoutContext.Provider value={layoutValues}>\n {children}\n </LayoutContext.Provider>\n );\n};\n\nexport const useLayoutContext = (): LayoutValues | null => {\n return useContext(LayoutContext);\n};\n"],"names":[],"mappings":";;;AAOA,MAAM,gBAAgB,cAAmC,IAAI;AAStD,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb;AACF,MAAuC;AACrC,QAAM,cAAc;AAAA,IAClB,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,IAEL,CAAC,iBAAiB;AAAA,EAAA;AAGpB,QAAM,eAAe;AAAA,IACnB,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,IAEF,CAAC,WAAW;AAAA,EAAA;AAGd,6BACG,cAAc,UAAd,EAAuB,OAAO,cAC5B,UACH;AAEJ;AAEO,MAAM,mBAAmB,MAA2B;AACzD,SAAO,WAAW,aAAa;AACjC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutValues.mjs","sources":["../../../../src/beta/LayoutWrapper/useLayoutValues.ts"],"sourcesContent":["import { DEFAULT_BREAKPOINTS } from './utils';\nimport { useLayoutContext, type LayoutValues } from './LayoutWrapper';\n\nexport const useLayoutValues = (): LayoutValues => {\n const context = useLayoutContext();\n\n if (context) {\n return context;\n }\n\n return {\n breakpoints: DEFAULT_BREAKPOINTS,\n };\n};\n"],"names":[],"mappings":";;AAGO,MAAM,kBAAkB,MAAoB;AACjD,QAAM,UAAU,iBAAA;AAEhB,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,EAAA;AAEjB;"}
1
+ {"version":3,"file":"useLayoutValues.mjs","sources":["../../../../src/beta/LayoutWrapper/useLayoutValues.ts"],"sourcesContent":["import { DEFAULT_BREAKPOINTS } from './utils';\nimport { type LayoutValues, useLayoutContext } from './LayoutWrapper';\n\nexport const useLayoutValues = (): LayoutValues => {\n const context = useLayoutContext();\n\n if (context) {\n return context;\n }\n\n return {\n breakpoints: DEFAULT_BREAKPOINTS,\n };\n};\n"],"names":[],"mappings":";;AAGO,MAAM,kBAAkB,MAAoB;AACjD,QAAM,UAAU,iBAAA;AAEhB,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,EAAA;AAEjB;"}
@@ -1,15 +1,15 @@
1
1
  /* empty css */
2
- import { GridComponent } from "./Grid/index.mjs";
3
- import { FlexComponent } from "./Flex/index.mjs";
2
+ import { Grid } from "./Grid/index.mjs";
3
+ import { Flex } from "./Flex/index.mjs";
4
4
  import { Template } from "./templates/index.mjs";
5
+ import { FlexSpacer } from "./Flex/FlexSpacer.mjs";
5
6
  import { GridItem } from "./Grid/GridItem.mjs";
6
7
  import { LayoutWrapper } from "./LayoutWrapper/LayoutWrapper.mjs";
7
8
  import { useLayoutValues } from "./LayoutWrapper/useLayoutValues.mjs";
8
- import { FlexSpacer } from "./Flex/FlexSpacer.mjs";
9
9
  export {
10
- FlexComponent as Flex,
10
+ Flex,
11
11
  FlexSpacer,
12
- GridComponent as Grid,
12
+ Grid,
13
13
  GridItem,
14
14
  LayoutWrapper,
15
15
  Template,
@@ -1,9 +1,9 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import classNames from "classnames";
4
- import { Contrast } from "../Contrast.mjs";
5
- import { FlexComponent } from "../Flex/index.mjs";
6
- import { GridComponent } from "../Grid/index.mjs";
4
+ import { RightArrowIcon, LeftArrowIcon } from "@entur/icons";
5
+ import { Flex as FlexComponent } from "../Flex/index.mjs";
6
+ import { Grid as GridComponent } from "../Grid/index.mjs";
7
7
  /* empty css */
8
8
  const defaultSidebarElement = "aside";
9
9
  const defaultSectionElement = "div";
@@ -23,8 +23,17 @@ const SidebarUser = React.forwardRef(
23
23
  );
24
24
  const SidebarData = React.forwardRef(
25
25
  ({ children, as, ...rest }, ref) => {
26
- const Element = as || defaultSectionElement;
27
- return /* @__PURE__ */ jsx(Element, { ref, ...rest, children });
26
+ return /* @__PURE__ */ jsx(
27
+ FlexComponent,
28
+ {
29
+ ref,
30
+ as: as || defaultSectionElement,
31
+ direction: "column",
32
+ gap: "s",
33
+ ...rest,
34
+ children
35
+ }
36
+ );
28
37
  }
29
38
  );
30
39
  const SidebarNavigation = React.forwardRef(
@@ -58,35 +67,88 @@ const SidebarFooter = React.forwardRef(
58
67
  );
59
68
  }
60
69
  );
70
+ const CollapseToggle = ({ isCollapsed, onToggle, openLabel, closeLabel }) => /* @__PURE__ */ jsx(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ className: "eds-layout-template-sidebar__collapse-toggle",
75
+ onClick: onToggle,
76
+ "aria-expanded": !isCollapsed,
77
+ "aria-label": isCollapsed ? openLabel : closeLabel,
78
+ children: isCollapsed ? /* @__PURE__ */ jsx(RightArrowIcon, { size: 16 }) : /* @__PURE__ */ jsx(LeftArrowIcon, { size: 16 })
79
+ }
80
+ );
61
81
  const SidebarRoot = React.forwardRef(
62
82
  ({
63
83
  children,
64
84
  className,
65
85
  style,
66
86
  contrast = true,
87
+ collapsed,
88
+ onCollapseToggle,
89
+ openSidebarAriaLabel = "Åpne sidemeny",
90
+ closeSidebarAriaLabel = "Lukk sidemeny",
67
91
  as,
68
92
  ...rest
69
93
  }, ref) => {
70
- const WrapperElement = contrast ? Contrast : "div";
71
- return /* @__PURE__ */ jsx(GridComponent.Item, { as: WrapperElement, colSpan: "1 / 2", children: /* @__PURE__ */ jsx(
72
- FlexComponent,
94
+ const collapsible = collapsed !== void 0;
95
+ const isCollapsed = collapsed ?? false;
96
+ const sidebarClassNames = classNames(
97
+ "eds-layout-template-sidebar",
73
98
  {
74
- ref,
75
- as: as || defaultSidebarElement,
76
- direction: "column",
77
- gap: "m",
78
- className: classNames(
79
- "eds-layout-template-sidebar",
80
- {
81
- "eds-layout-template-sidebar--plain": !contrast
82
- },
83
- className
84
- ),
85
- style,
86
- ...rest,
87
- children
99
+ "eds-layout-template-sidebar--plain": !contrast,
100
+ "eds-layout-template-sidebar--collapsible": collapsible,
101
+ "eds-layout-template-sidebar--collapsed": collapsible && isCollapsed
102
+ },
103
+ className
104
+ );
105
+ const wrapperClassNames = classNames(
106
+ "eds-layout-template-sidebar-wrapper",
107
+ {
108
+ "eds-contrast": contrast,
109
+ "eds-layout-template-sidebar-wrapper--collapsible": collapsible
88
110
  }
89
- ) });
111
+ );
112
+ if (!collapsible) {
113
+ return /* @__PURE__ */ jsx(GridComponent.Item, { className: wrapperClassNames, colSpan: "1 / 2", children: /* @__PURE__ */ jsx(
114
+ FlexComponent,
115
+ {
116
+ ref,
117
+ as: as || defaultSidebarElement,
118
+ direction: "column",
119
+ gap: "m",
120
+ className: sidebarClassNames,
121
+ style,
122
+ ...rest,
123
+ children
124
+ }
125
+ ) });
126
+ }
127
+ const collapsedStyle = isCollapsed ? { ...style, "--eds-sidebar-width": "2rem" } : style;
128
+ return /* @__PURE__ */ jsxs(GridComponent.Item, { className: wrapperClassNames, colSpan: "1 / 2", children: [
129
+ /* @__PURE__ */ jsx(
130
+ FlexComponent,
131
+ {
132
+ ref,
133
+ as: as || defaultSidebarElement,
134
+ direction: "column",
135
+ gap: "m",
136
+ className: sidebarClassNames,
137
+ style: collapsedStyle,
138
+ ...rest,
139
+ children: /* @__PURE__ */ jsx("div", { className: "eds-layout-template-sidebar__content", children })
140
+ }
141
+ ),
142
+ onCollapseToggle && /* @__PURE__ */ jsx(
143
+ CollapseToggle,
144
+ {
145
+ isCollapsed,
146
+ onToggle: () => onCollapseToggle(!isCollapsed),
147
+ openLabel: openSidebarAriaLabel,
148
+ closeLabel: closeSidebarAriaLabel
149
+ }
150
+ )
151
+ ] });
90
152
  }
91
153
  );
92
154
  const Sidebar = Object.assign(SidebarRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.mjs","sources":["../../../../src/beta/templates/Sidebar.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Contrast } from '../../Contrast';\nimport { Flex } from '../Flex';\nimport { Grid } from '../Grid';\nimport './Sidebar.scss';\n\ntype SidebarOwnProps = {\n /** Toggle contrast styling for the sidebar */\n contrast?: boolean;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype SidebarSectionOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultSidebarElement = 'aside';\nconst defaultSectionElement = 'div';\nconst defaultNavigationElement = 'nav';\nconst defaultFooterElement = 'footer';\n\nexport type SidebarProps<\n T extends React.ElementType = typeof defaultSidebarElement,\n> = PolymorphicComponentProps<T, SidebarOwnProps>;\n\nexport type SidebarSectionProps<\n T extends React.ElementType = typeof defaultSectionElement,\n> = PolymorphicComponentProps<T, SidebarSectionOwnProps>;\n\nconst SidebarLogo = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarUser = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarData = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarNavigation = React.forwardRef(\n <E extends React.ElementType = typeof defaultNavigationElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultNavigationElement;\n return (\n <Element\n ref={ref}\n className={classNames(\n 'eds-layout-template-sidebar__navigation',\n className,\n )}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarFooter = React.forwardRef(\n <E extends React.ElementType = typeof defaultFooterElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultFooterElement;\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-template-sidebar__footer', className)}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarRoot = React.forwardRef(\n <E extends React.ElementType = typeof defaultSidebarElement>(\n {\n children,\n className,\n style,\n contrast = true,\n as,\n ...rest\n }: SidebarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const WrapperElement = contrast ? Contrast : 'div';\n return (\n <Grid.Item as={WrapperElement} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={classNames(\n 'eds-layout-template-sidebar',\n {\n 'eds-layout-template-sidebar--plain': !contrast,\n },\n className,\n )}\n style={style}\n {...rest}\n >\n {children}\n </Flex>\n </Grid.Item>\n );\n },\n);\n\nexport type SidebarComponent = typeof SidebarRoot & {\n Logo: typeof SidebarLogo;\n User: typeof SidebarUser;\n Data: typeof SidebarData;\n Navigation: typeof SidebarNavigation;\n Footer: typeof SidebarFooter;\n};\n\nexport const Sidebar: SidebarComponent = Object.assign(SidebarRoot, {\n Logo: SidebarLogo,\n User: SidebarUser,\n Data: SidebarData,\n Navigation: SidebarNavigation,\n Footer: SidebarFooter,\n});\n\nSidebar.displayName = 'Template.Portal.Sidebar';\nSidebar.Logo.displayName = 'Template.Portal.Sidebar.Logo';\nSidebar.User.displayName = 'Template.Portal.Sidebar.User';\nSidebar.Data.displayName = 'Template.Portal.Sidebar.Data';\nSidebar.Navigation.displayName = 'Template.Portal.Sidebar.Navigation';\nSidebar.Footer.displayName = 'Template.Portal.Sidebar.Footer';\n"],"names":["Grid","Flex"],"mappings":";;;;;;;AAsBA,MAAM,wBAAwB;AAC9B,MAAM,wBAAwB;AAC9B,MAAM,2BAA2B;AACjC,MAAM,uBAAuB;AAU7B,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACE,oBAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACE,oBAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE,EAAE,UAAU,IAAI,GAAG,KAAA,GACnB,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACE,oBAAC,SAAA,EAAQ,KAAW,GAAG,MACpB,UACH;AAAA,EAEJ;AACF;AAEA,MAAM,oBAAoB,MAAM;AAAA,EAC9B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,gBAAgB,MAAM;AAAA,EAC1B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,UAAM,UAA6B,MAAM;AACzC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW,WAAW,uCAAuC,SAAS;AAAA,QACrE,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,cAAc,MAAM;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,iBAAiB,WAAW,WAAW;AAC7C,+BACGA,cAAK,MAAL,EAAU,IAAI,gBAAgB,SAAQ,SACrC,UAAA;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAU;AAAA,QACV,KAAI;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,sCAAsC,CAAC;AAAA,UAAA;AAAA,UAEzC;AAAA,QAAA;AAAA,QAEF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AACF;AAUO,MAAM,UAA4B,OAAO,OAAO,aAAa;AAAA,EAClE,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AACV,CAAC;AAED,QAAQ,cAAc;AACtB,QAAQ,KAAK,cAAc;AAC3B,QAAQ,KAAK,cAAc;AAC3B,QAAQ,KAAK,cAAc;AAC3B,QAAQ,WAAW,cAAc;AACjC,QAAQ,OAAO,cAAc;"}
1
+ {"version":3,"file":"Sidebar.mjs","sources":["../../../../src/beta/templates/Sidebar.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Flex } from '../Flex';\nimport { Grid } from '../Grid';\nimport './Sidebar.scss';\n\ntype SidebarOwnProps = {\n /** Toggle contrast styling for the sidebar */\n contrast?: boolean;\n /** Controlled collapsed state. When provided, the sidebar becomes\n * collapsible and a toggle button is rendered. */\n collapsed?: boolean;\n /** Callback when the collapse toggle is clicked */\n onCollapseToggle?: (collapsed: boolean) => void;\n /** aria-label for the toggle button when the sidebar is collapsed\n * @default 'Åpne sidemeny'\n */\n openSidebarAriaLabel?: string;\n /** aria-label for the toggle button when the sidebar is expanded\n * @default 'Lukk sidemeny'\n */\n closeSidebarAriaLabel?: string;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype SidebarSectionOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultSidebarElement = 'aside';\nconst defaultSectionElement = 'div';\nconst defaultNavigationElement = 'nav';\nconst defaultFooterElement = 'footer';\n\nexport type SidebarProps<\n T extends React.ElementType = typeof defaultSidebarElement,\n> = PolymorphicComponentProps<T, SidebarOwnProps>;\n\nexport type SidebarSectionProps<\n T extends React.ElementType = typeof defaultSectionElement,\n> = PolymorphicComponentProps<T, SidebarSectionOwnProps>;\n\nconst SidebarLogo = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarUser = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultSectionElement;\n return (\n <Element ref={ref} {...rest}>\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarData = React.forwardRef(\n <E extends React.ElementType = typeof defaultSectionElement>(\n { children, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Flex\n ref={ref}\n as={as || defaultSectionElement}\n direction=\"column\"\n gap=\"s\"\n {...rest}\n >\n {children}\n </Flex>\n );\n },\n);\n\nconst SidebarNavigation = React.forwardRef(\n <E extends React.ElementType = typeof defaultNavigationElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultNavigationElement;\n return (\n <Element\n ref={ref}\n className={classNames(\n 'eds-layout-template-sidebar__navigation',\n className,\n )}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst SidebarFooter = React.forwardRef(\n <E extends React.ElementType = typeof defaultFooterElement>(\n { children, className, as, ...rest }: SidebarSectionProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const Element: React.ElementType = as || defaultFooterElement;\n return (\n <Element\n ref={ref}\n className={classNames('eds-layout-template-sidebar__footer', className)}\n {...rest}\n >\n {children}\n </Element>\n );\n },\n);\n\nconst CollapseToggle: React.FC<{\n isCollapsed: boolean;\n onToggle: () => void;\n openLabel: string;\n closeLabel: string;\n}> = ({ isCollapsed, onToggle, openLabel, closeLabel }) => (\n <button\n type=\"button\"\n className=\"eds-layout-template-sidebar__collapse-toggle\"\n onClick={onToggle}\n aria-expanded={!isCollapsed}\n aria-label={isCollapsed ? openLabel : closeLabel}\n >\n {isCollapsed ? <RightArrowIcon size={16} /> : <LeftArrowIcon size={16} />}\n </button>\n);\n\nconst SidebarRoot = React.forwardRef(\n <E extends React.ElementType = typeof defaultSidebarElement>(\n {\n children,\n className,\n style,\n contrast = true,\n collapsed,\n onCollapseToggle,\n openSidebarAriaLabel = 'Åpne sidemeny',\n closeSidebarAriaLabel = 'Lukk sidemeny',\n as,\n ...rest\n }: SidebarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n const collapsible = collapsed !== undefined;\n const isCollapsed = collapsed ?? false;\n\n const sidebarClassNames = classNames(\n 'eds-layout-template-sidebar',\n {\n 'eds-layout-template-sidebar--plain': !contrast,\n 'eds-layout-template-sidebar--collapsible': collapsible,\n 'eds-layout-template-sidebar--collapsed': collapsible && isCollapsed,\n },\n className,\n );\n\n const wrapperClassNames = classNames(\n 'eds-layout-template-sidebar-wrapper',\n {\n 'eds-contrast': contrast,\n 'eds-layout-template-sidebar-wrapper--collapsible': collapsible,\n },\n );\n\n if (!collapsible) {\n return (\n <Grid.Item className={wrapperClassNames} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={sidebarClassNames}\n style={style}\n {...rest}\n >\n {children}\n </Flex>\n </Grid.Item>\n );\n }\n\n const collapsedStyle = isCollapsed\n ? ({ ...style, '--eds-sidebar-width': '2rem' } as React.CSSProperties)\n : style;\n\n return (\n <Grid.Item className={wrapperClassNames} colSpan=\"1 / 2\">\n <Flex\n ref={ref}\n as={as || defaultSidebarElement}\n direction=\"column\"\n gap=\"m\"\n className={sidebarClassNames}\n style={collapsedStyle}\n {...rest}\n >\n <div className=\"eds-layout-template-sidebar__content\">{children}</div>\n </Flex>\n {onCollapseToggle && (\n <CollapseToggle\n isCollapsed={isCollapsed}\n onToggle={() => onCollapseToggle(!isCollapsed)}\n openLabel={openSidebarAriaLabel}\n closeLabel={closeSidebarAriaLabel}\n />\n )}\n </Grid.Item>\n );\n },\n);\n\nexport type SidebarComponent = typeof SidebarRoot & {\n Logo: typeof SidebarLogo;\n User: typeof SidebarUser;\n Data: typeof SidebarData;\n Navigation: typeof SidebarNavigation;\n Footer: typeof SidebarFooter;\n};\n\nexport const Sidebar: SidebarComponent = Object.assign(SidebarRoot, {\n Logo: SidebarLogo,\n User: SidebarUser,\n Data: SidebarData,\n Navigation: SidebarNavigation,\n Footer: SidebarFooter,\n});\n\nSidebar.displayName = 'Template.Portal.Sidebar';\nSidebar.Logo.displayName = 'Template.Portal.Sidebar.Logo';\nSidebar.User.displayName = 'Template.Portal.Sidebar.User';\nSidebar.Data.displayName = 'Template.Portal.Sidebar.Data';\nSidebar.Navigation.displayName = 'Template.Portal.Sidebar.Navigation';\nSidebar.Footer.displayName = 'Template.Portal.Sidebar.Footer';\n"],"names":["Flex","Grid"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import classNames from "classnames";
4
- import { GridComponent } from "../../Grid/index.mjs";
4
+ import { Grid as GridComponent } from "../../Grid/index.mjs";
5
5
  import { Sidebar } from "../Sidebar.mjs";
6
6
  /* empty css */
7
7
  const defaultStatusBarElement = "div";
@@ -13,7 +13,6 @@ const PortalRoot = React.forwardRef(
13
13
  {
14
14
  ref,
15
15
  as,
16
- templateColumns: "var(--eds-sidebar-width, min-content) minmax(0, 1fr)",
17
16
  gap: "none",
18
17
  columnGap: "m",
19
18
  className: classNames("eds-layout-template-portal", className),
@@ -1 +1 @@
1
- {"version":3,"file":"Portal.mjs","sources":["../../../../../src/beta/templates/portal/Portal.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Grid } from '../../Grid';\nimport { Sidebar, SidebarComponent } from '../Sidebar';\nimport './Portal.scss';\n\ntype PortalOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalStatusBarOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalMainOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultStatusBarElement = 'div';\nconst defaultPortalMainElement = 'main';\n\nexport type PortalProps<T extends React.ElementType = typeof Grid> =\n PolymorphicComponentProps<T, PortalOwnProps>;\n\nexport type PortalStatusBarProps<\n T extends React.ElementType = typeof defaultStatusBarElement,\n> = PolymorphicComponentProps<T, PortalStatusBarOwnProps>;\n\nexport type PortalMainProps<\n T extends React.ElementType = typeof defaultPortalMainElement,\n> = PolymorphicComponentProps<T, PortalMainOwnProps>;\n\nconst PortalRoot = React.forwardRef(\n <E extends React.ElementType = typeof Grid>(\n { children, className, style, as, ...rest }: PortalProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid\n ref={ref}\n as={as}\n templateColumns=\"var(--eds-sidebar-width, min-content) minmax(0, 1fr)\"\n gap=\"none\"\n columnGap=\"m\"\n className={classNames('eds-layout-template-portal', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid>\n );\n },\n);\n\nconst PortalStatusBar = React.forwardRef(\n <E extends React.ElementType = typeof defaultStatusBarElement>(\n { children, className, as, ...rest }: PortalStatusBarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultStatusBarElement}\n className={classNames(\n 'eds-layout-template-portal__status-bar',\n className,\n )}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nconst PortalMain = React.forwardRef(\n <E extends React.ElementType = typeof defaultPortalMainElement>(\n { children, className, style, as, ...rest }: PortalMainProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultPortalMainElement}\n colSpan=\"2 / -1\"\n className={classNames('eds-layout-template-portal__main', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nexport type PortalComponent = typeof PortalRoot & {\n StatusBar: typeof PortalStatusBar;\n Sidebar: SidebarComponent;\n Main: typeof PortalMain;\n};\n\nexport const Portal: PortalComponent = Object.assign(PortalRoot, {\n StatusBar: PortalStatusBar,\n Sidebar,\n Main: PortalMain,\n});\n\nPortal.displayName = 'Template.Portal';\nPortal.StatusBar.displayName = 'Template.Portal.StatusBar';\nPortal.Main.displayName = 'Template.Portal.Main';\n"],"names":["Grid"],"mappings":";;;;;;AAyBA,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAajC,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACE;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,iBAAgB;AAAA,QAChB,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW,WAAW,8BAA8B,SAAS;AAAA,QAC7D;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,kBAAkB,MAAM;AAAA,EAC5B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,WACE;AAAA,MAACA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACE;AAAA,MAACA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,SAAQ;AAAA,QACR,WAAW,WAAW,oCAAoC,SAAS;AAAA,QACnE;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAQO,MAAM,SAA0B,OAAO,OAAO,YAAY;AAAA,EAC/D,WAAW;AAAA,EACX;AAAA,EACA,MAAM;AACR,CAAC;AAED,OAAO,cAAc;AACrB,OAAO,UAAU,cAAc;AAC/B,OAAO,KAAK,cAAc;"}
1
+ {"version":3,"file":"Portal.mjs","sources":["../../../../../src/beta/templates/portal/Portal.tsx"],"sourcesContent":["import React from 'react';\nimport type { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { Grid } from '../../Grid';\nimport { Sidebar, SidebarComponent } from '../Sidebar';\nimport './Portal.scss';\n\ntype PortalOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalStatusBarOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\ntype PortalMainOwnProps = {\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nconst defaultStatusBarElement = 'div';\nconst defaultPortalMainElement = 'main';\n\nexport type PortalProps<T extends React.ElementType = typeof Grid> =\n PolymorphicComponentProps<T, PortalOwnProps>;\n\nexport type PortalStatusBarProps<\n T extends React.ElementType = typeof defaultStatusBarElement,\n> = PolymorphicComponentProps<T, PortalStatusBarOwnProps>;\n\nexport type PortalMainProps<\n T extends React.ElementType = typeof defaultPortalMainElement,\n> = PolymorphicComponentProps<T, PortalMainOwnProps>;\n\nconst PortalRoot = React.forwardRef(\n <E extends React.ElementType = typeof Grid>(\n { children, className, style, as, ...rest }: PortalProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid\n ref={ref}\n as={as}\n gap=\"none\"\n columnGap=\"m\"\n className={classNames('eds-layout-template-portal', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid>\n );\n },\n);\n\nconst PortalStatusBar = React.forwardRef(\n <E extends React.ElementType = typeof defaultStatusBarElement>(\n { children, className, as, ...rest }: PortalStatusBarProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultStatusBarElement}\n className={classNames(\n 'eds-layout-template-portal__status-bar',\n className,\n )}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nconst PortalMain = React.forwardRef(\n <E extends React.ElementType = typeof defaultPortalMainElement>(\n { children, className, style, as, ...rest }: PortalMainProps<E>,\n ref?: React.Ref<Element>,\n ) => {\n return (\n <Grid.Item\n ref={ref}\n as={as || defaultPortalMainElement}\n colSpan=\"2 / -1\"\n className={classNames('eds-layout-template-portal__main', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid.Item>\n );\n },\n);\n\nexport type PortalComponent = typeof PortalRoot & {\n StatusBar: typeof PortalStatusBar;\n Sidebar: SidebarComponent;\n Main: typeof PortalMain;\n};\n\nexport const Portal: PortalComponent = Object.assign(PortalRoot, {\n StatusBar: PortalStatusBar,\n Sidebar,\n Main: PortalMain,\n});\n\nPortal.displayName = 'Template.Portal';\nPortal.StatusBar.displayName = 'Template.Portal.StatusBar';\nPortal.Main.displayName = 'Template.Portal.Main';\n"],"names":["Grid"],"mappings":";;;;;;AAyBA,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAajC,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACE;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW,WAAW,8BAA8B,SAAS;AAAA,QAC7D;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,kBAAkB,MAAM;AAAA,EAC5B,CACE,EAAE,UAAU,WAAW,IAAI,GAAG,KAAA,GAC9B,QACG;AACH,WACE;AAAA,MAACA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,MAAM,aAAa,MAAM;AAAA,EACvB,CACE,EAAE,UAAU,WAAW,OAAO,IAAI,GAAG,KAAA,GACrC,QACG;AACH,WACE;AAAA,MAACA,cAAK;AAAA,MAAL;AAAA,QACC;AAAA,QACA,IAAI,MAAM;AAAA,QACV,SAAQ;AAAA,QACR,WAAW,WAAW,oCAAoC,SAAS;AAAA,QACnE;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAQO,MAAM,SAA0B,OAAO,OAAO,YAAY;AAAA,EAC/D,WAAW;AAAA,EACX;AAAA,EACA,MAAM;AACR,CAAC;AAED,OAAO,cAAc;AACrB,OAAO,UAAU,cAAc;AAC/B,OAAO,KAAK,cAAc;"}
@@ -163,43 +163,170 @@
163
163
  -webkit-flex:1 1 0%;
164
164
  -moz-box-flex:1;
165
165
  flex:1 1 0%;
166
- }.eds-layout-template-sidebar{
167
- padding:1rem;
168
- padding:var(--eds-sidebar-padding, 1rem);
166
+ }.eds-layout-template-sidebar-wrapper{
167
+ height:100%;
168
+ min-height:0;
169
+ }
170
+ .eds-layout-template-sidebar-wrapper--collapsible{
171
+ position:relative;
172
+ }
173
+
174
+ .eds-layout-template-sidebar{
175
+ padding:2rem;
176
+ padding:var(--eds-sidebar-padding, 2rem);
169
177
  height:100%;
178
+ max-height:100dvh;
179
+ max-height:var(--eds-viewport-height, 100dvh);
170
180
  width:20rem;
171
181
  width:var(--eds-sidebar-width, 20rem);
182
+ position:-webkit-sticky;
183
+ position:sticky;
184
+ top:0;
185
+ }
186
+ .eds-layout-template-sidebar--collapsible{
187
+ overflow-x:hidden;
188
+ contain:inline-size;
189
+ -webkit-transition:width ease-in-out 0.2s;
190
+ -o-transition:width ease-in-out 0.2s;
191
+ -moz-transition:width ease-in-out 0.2s;
192
+ transition:width ease-in-out 0.2s;
193
+ }
194
+ .eds-layout-template-sidebar--collapsed{
195
+ padding:2rem 0;
196
+ padding:var(--eds-sidebar-padding, 2rem) 0;
172
197
  }
173
-
174
198
  .eds-layout-template-sidebar--plain{
175
199
  background-color:var(--components-menu-sidenavigation-standard-background);
176
200
  }
177
-
178
201
  .eds-layout-template-sidebar__navigation{
179
202
  -webkit-box-flex:1;
180
203
  -webkit-flex:1 1 auto;
181
204
  -moz-box-flex:1;
182
205
  flex:1 1 auto;
183
- margin-left:-webkit-calc(-1 * 1rem);
184
- margin-left:-moz-calc(-1 * 1rem);
185
- margin-left:calc(-1 * 1rem);
186
- margin-left:-webkit-calc(-1 * var(--eds-sidebar-padding, 1rem));
187
- margin-left:-moz-calc(-1 * var(--eds-sidebar-padding, 1rem));
188
- margin-left:calc(-1 * var(--eds-sidebar-padding, 1rem));
189
- margin-right:-webkit-calc(-1 * 1rem);
190
- margin-right:-moz-calc(-1 * 1rem);
191
- margin-right:calc(-1 * 1rem);
192
- margin-right:-webkit-calc(-1 * var(--eds-sidebar-padding, 1rem));
193
- margin-right:-moz-calc(-1 * var(--eds-sidebar-padding, 1rem));
194
- margin-right:calc(-1 * var(--eds-sidebar-padding, 1rem));
206
+ min-height:0;
207
+ overflow-y:auto;
208
+ scrollbar-width:thin;
209
+ scrollbar-color:rgba(255, 255, 255, 0.3) transparent;
210
+ margin-left:-webkit-calc(-1 * 2rem);
211
+ margin-left:-moz-calc(-1 * 2rem);
212
+ margin-left:calc(-1 * 2rem);
213
+ margin-left:-webkit-calc(-1 * var(--eds-sidebar-padding, 2rem));
214
+ margin-left:-moz-calc(-1 * var(--eds-sidebar-padding, 2rem));
215
+ margin-left:calc(-1 * var(--eds-sidebar-padding, 2rem));
216
+ margin-right:-webkit-calc(-1 * 2rem);
217
+ margin-right:-moz-calc(-1 * 2rem);
218
+ margin-right:calc(-1 * 2rem);
219
+ margin-right:-webkit-calc(-1 * var(--eds-sidebar-padding, 2rem));
220
+ margin-right:-moz-calc(-1 * var(--eds-sidebar-padding, 2rem));
221
+ margin-right:calc(-1 * var(--eds-sidebar-padding, 2rem));
222
+ }
223
+ .eds-layout-template-sidebar--plain .eds-layout-template-sidebar__navigation{
224
+ scrollbar-color:rgba(0, 0, 0, 0.2) transparent;
195
225
  }
196
-
197
226
  .eds-layout-template-sidebar__footer{
198
227
  margin-top:auto;
228
+ }
229
+ .eds-layout-template-sidebar__content{
230
+ display:-webkit-box;
231
+ display:-webkit-flex;
232
+ display:-moz-box;
233
+ display:flex;
234
+ -webkit-box-orient:vertical;
235
+ -webkit-box-direction:normal;
236
+ -webkit-flex-direction:column;
237
+ -moz-box-orient:vertical;
238
+ -moz-box-direction:normal;
239
+ flex-direction:column;
240
+ gap:var(--m);
241
+ -webkit-box-flex:1;
242
+ -webkit-flex:1 1 0;
243
+ -moz-box-flex:1;
244
+ flex:1 1 0;
245
+ min-height:0;
246
+ min-width:-webkit-calc(20rem - 2 * 2rem);
247
+ min-width:-moz-calc(20rem - 2 * 2rem);
248
+ min-width:calc(20rem - 2 * 2rem);
249
+ min-width:-webkit-calc(var(--eds-sidebar-width, 20rem) - 2 * var(--eds-sidebar-padding, 2rem));
250
+ min-width:-moz-calc(var(--eds-sidebar-width, 20rem) - 2 * var(--eds-sidebar-padding, 2rem));
251
+ min-width:calc(var(--eds-sidebar-width, 20rem) - 2 * var(--eds-sidebar-padding, 2rem));
252
+ opacity:1;
253
+ -webkit-transition:opacity ease-in 0.1s 0.2s;
254
+ -o-transition:opacity ease-in 0.1s 0.2s;
255
+ -moz-transition:opacity ease-in 0.1s 0.2s;
256
+ transition:opacity ease-in 0.1s 0.2s;
257
+ }
258
+ .eds-layout-template-sidebar--collapsed .eds-layout-template-sidebar__content{
259
+ opacity:0;
260
+ visibility:hidden;
261
+ -webkit-transition:opacity ease-out 0.1s, visibility 0s 0.1s;
262
+ -o-transition:opacity ease-out 0.1s, visibility 0s 0.1s;
263
+ -moz-transition:opacity ease-out 0.1s, visibility 0s 0.1s;
264
+ transition:opacity ease-out 0.1s, visibility 0s 0.1s;
265
+ }
266
+ .eds-layout-template-sidebar__collapse-toggle{
267
+ position:absolute;
268
+ right:-1rem;
269
+ bottom:2rem;
270
+ height:2rem;
271
+ width:2rem;
272
+ -webkit-border-radius:50%;
273
+ -moz-border-radius:50%;
274
+ border-radius:50%;
275
+ border:none;
276
+ cursor:pointer;
277
+ background-color:var(--basecolors-frame-default);
278
+ color:var(--text-dark);
279
+ -webkit-box-shadow:0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.25);
280
+ -moz-box-shadow:0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.25);
281
+ box-shadow:0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.25);
282
+ display:-webkit-box;
283
+ display:-webkit-flex;
284
+ display:-moz-box;
285
+ display:flex;
286
+ -webkit-box-align:center;
287
+ -webkit-align-items:center;
288
+ -moz-box-align:center;
289
+ align-items:center;
290
+ -webkit-box-pack:center;
291
+ -webkit-justify-content:center;
292
+ -moz-box-pack:center;
293
+ justify-content:center;
294
+ z-index:10;
295
+ padding:0;
296
+ }
297
+ .eds-contrast .eds-layout-template-sidebar__collapse-toggle{
298
+ background-color:var(--basecolors-frame-contrastalt);
299
+ color:var(--basecolors-text-light);
300
+ }
301
+ .eds-layout-template-sidebar__collapse-toggle svg{
302
+ margin:0;
303
+ }
304
+ .eds-layout-template-sidebar__collapse-toggle:focus-visible{
305
+ outline:2px solid #181c56;
306
+ outline-color:var(--basecolors-stroke-focus-standard);
307
+ outline-offset:0.125rem;
308
+ }
309
+ .eds-contrast .eds-layout-template-sidebar__collapse-toggle:focus-visible{
310
+ outline-color:var(--basecolors-stroke-focus-contrast);
199
311
  }.eds-layout-template-portal{
200
- min-height:100vh;
312
+ --grid-template-columns:var(--eds-sidebar-width, min-content) minmax(0, 1fr);
313
+ min-height:0;
314
+ max-height:100dvh;
315
+ max-height:var(--eds-viewport-height, 100dvh);
316
+ height:100dvh;
317
+ height:var(--eds-viewport-height, 100dvh);
201
318
  width:100%;
202
319
  }
320
+ .eds-layout-template-portal:has(.eds-layout-template-sidebar--collapsible){
321
+ -webkit-transition:grid-template-columns ease-in-out 0.2s;
322
+ -o-transition:grid-template-columns ease-in-out 0.2s;
323
+ -moz-transition:grid-template-columns ease-in-out 0.2s;
324
+ transition:grid-template-columns ease-in-out 0.2s;
325
+ transition:grid-template-columns ease-in-out 0.2s, -ms-grid-columns ease-in-out 0.2s;
326
+ }
327
+ .eds-layout-template-portal:has(.eds-layout-template-sidebar--collapsed){
328
+ --grid-template-columns:2rem minmax(0, 1fr);
329
+ }
203
330
  .eds-layout-template-portal:has(> .eds-layout-template-portal__status-bar){
204
331
  --grid-template-rows:auto 1fr;
205
332
  }
@@ -3,6 +3,19 @@ import { PolymorphicComponentProps } from '@entur/utils';
3
3
  type SidebarOwnProps = {
4
4
  /** Toggle contrast styling for the sidebar */
5
5
  contrast?: boolean;
6
+ /** Controlled collapsed state. When provided, the sidebar becomes
7
+ * collapsible and a toggle button is rendered. */
8
+ collapsed?: boolean;
9
+ /** Callback when the collapse toggle is clicked */
10
+ onCollapseToggle?: (collapsed: boolean) => void;
11
+ /** aria-label for the toggle button when the sidebar is collapsed
12
+ * @default 'Åpne sidemeny'
13
+ */
14
+ openSidebarAriaLabel?: string;
15
+ /** aria-label for the toggle button when the sidebar is expanded
16
+ * @default 'Lukk sidemeny'
17
+ */
18
+ closeSidebarAriaLabel?: string;
6
19
  className?: string;
7
20
  style?: React.CSSProperties;
8
21
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.cjs.js","sources":["../src/Contrast.tsx","../src/BaseCard.tsx","../src/NavigationCard.tsx","../src/MediaCard.tsx","../src/Badge/Badge.tsx","../src/Badge/BulletBadge.tsx","../src/Badge/NotificationBadge.tsx","../src/Badge/StatusBadge.tsx","../src/Tag.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport './BaseCard.scss';\n\nexport type BaseCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager Card\n * @default \"div\"\n */\n as?: 'div' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type BaseCardProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, BaseCardOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const BaseCard = <E extends React.ElementType = typeof defaultElement>({\n children,\n className,\n as,\n ...rest\n}: BaseCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-base-card', className);\n return (\n <Element className={classList} {...rest}>\n {children}\n </Element>\n );\n};\n","import React from 'react';\nimport { Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { Heading3 } from '@entur/typography';\nimport { BaseCard } from './BaseCard';\nimport './NavigationCard.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type NavigationCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager NavigationCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Valgfritt ikon som står over tittelen */\n titleIcon?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Lager en mer kompakt NavigationCard, uten ikon og beskrivende tekst\n * @default false\n */\n compact?: boolean;\n /** Beskrivelse under tittel, om ikke \"compact\" er valgt */\n children?: React.ReactNode;\n /** @deprecated eksternlenke ikon er ikke lenger støttet i NavigationCard */\n externalLink?: boolean;\n};\n\nexport type NavigationCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, NavigationCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const NavigationCard = <\n E extends React.ElementType = typeof defaultElement,\n>({\n title,\n children,\n titleIcon,\n compact = false,\n className,\n as,\n ...rest\n}: NavigationCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-navigation-card', className, {\n 'eds-base-card--red-line': compact,\n 'eds-navigation-card--compact': compact,\n });\n return (\n <BaseCard as={Element} className={classList} {...rest}>\n <div className=\"eds-navigation-card-header\">\n <div className=\"eds-navigation-card-header__content\">\n {titleIcon && (\n <div\n className=\"eds-navigation-card-header__title-icon\"\n aria-hidden=\"true\"\n >\n {titleIcon}\n </div>\n )}\n <span className=\"eds-navigation-card-header__title\">\n <Heading3 as=\"span\">{title}</Heading3>\n </span>\n </div>\n {!compact && (\n <div className=\"eds-navigation-card-header__highlight\"></div>\n )}\n </div>\n {!compact && (\n <>\n <Paragraph>{children}</Paragraph>\n </>\n )}\n </BaseCard>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { Paragraph, Label, Heading3 } from '@entur/typography';\nimport classNames from 'classnames';\nimport { BaseCard } from './BaseCard';\nimport { ForwardIcon } from '@entur/icons';\nimport './MediaCard.scss';\nimport { ConditionalWrapper, PolymorphicComponentProps } from '@entur/utils';\n\nexport type MediaCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager bunnen (under media) av MediaCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Teksten under tittelen i MediaCard */\n description?: React.ReactNode;\n /** Kategori (eller lignende) som vises over tittelen */\n category?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Det du skulle ønske som media (f.eks. bilder eller video) */\n children?: React.ReactNode;\n /** Styling som sendes til komponenten */\n style?: CSSProperties;\n /** Hvilken heading som brukes for tittelen.\n * Blir kun satt hvis description også er satt.\n * @default 'h2'\n */\n headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** Skjul pil-ikonet nederst til høyre\n * @default false\n */\n hideArrow?: boolean;\n /** Om MediaCard skal vises horisontalt eller vertikalt\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Props som sendes til wrapper-elementet i stedet for lenke-elementet */\n wrapperProps?: React.HTMLAttributes<HTMLElement>;\n /** @deprecated Denne prop-en har ikke lenger en funksjon.\n * Hvis du trenger å legge til props på wrapper-elementet, bruk 'wrapperProps'-prop-en\n */\n wholeCardAsElement?: boolean;\n};\n\nexport type MediaCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, MediaCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const MediaCard = <E extends React.ElementType = typeof defaultElement>({\n title,\n description,\n children,\n className,\n category,\n style,\n as,\n headingLevel = 'h2',\n wholeCardAsElement: whole,\n hideArrow,\n wrapperProps,\n orientation,\n ...rest\n}: MediaCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const Heading = Heading3;\n\n const _wrapperProps = whole\n ? { ...wrapperProps, ...rest }\n : { ...wrapperProps };\n const classList = classNames('eds-base-card, eds-media-card', className, {\n 'eds-media-card--horizontal': orientation === 'horizontal',\n });\n\n return (\n <BaseCard className={classList} style={style} {..._wrapperProps}>\n <div className=\"eds-media-card__media\">{children}</div>\n <div className=\"eds-media-card__text\">\n {category && (\n <Label className=\"eds-media-card__text__category\">{category}</Label>\n )}\n {/* we only want a heading wrapper when we also have description text */}\n <ConditionalWrapper\n condition={description !== undefined}\n wrapper={(children: React.ReactNode) => (\n <Heading as={headingLevel} className=\"eds-media-card__text__title\">\n {children}\n </Heading>\n )}\n >\n <Element\n tabIndex={0}\n className=\"eds-media-card__text__title-link\"\n {...rest}\n >\n {title}\n </Element>\n </ConditionalWrapper>\n {description !== undefined && <Paragraph>{description}</Paragraph>}\n {!hideArrow && (\n <ForwardIcon\n className=\"eds-media-card__arrow-icon\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n </BaseCard>\n );\n};\n\nexport default MediaCard;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\nimport './Badge.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\nexport type BadgeTypes = 'status' | 'bullet' | 'notification';\n\nexport type BadgeOwnProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: 'span' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n type?: BadgeTypes;\n /** @deprecated Bruk `hide` i stedet */\n invisible?: boolean;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BadgeOwnProps>;\n\nexport type BadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const Badge: BadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n {\n children,\n className,\n max = 99,\n variant,\n showZero = false,\n invisible: invisibleProp = false,\n hide: hideProp = false,\n as,\n type = 'status',\n ...rest\n }: BadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element: React.ElementType = as || defaultElement;\n\n const computedHide =\n hideProp ||\n invisibleProp ||\n (children === 0 && !showZero) ||\n children == null;\n\n let displayValue;\n if (typeof children === 'number') {\n displayValue = children > max ? `${max}+` : children;\n } else {\n displayValue = children;\n }\n\n const classList = classNames(\n className,\n 'eds-badge',\n {\n 'eds-badge--hide': computedHide,\n 'eds-badge--show-zero': showZero,\n },\n `eds-badge--variant-${variant}`,\n `eds-badge--type-${type}`,\n );\n\n return (\n <Element className={classList} ref={ref} {...rest}>\n {displayValue}\n </Element>\n );\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype BulletBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BulletBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BulletBadgeBaseProps>;\n\nexport type BulletBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BulletBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const BulletBadge: BulletBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: BulletBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"bullet\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype NotificationBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type NotificationBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, NotificationBadgeBaseProps>;\n\nexport type NotificationBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: NotificationBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const NotificationBadge: NotificationBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: NotificationBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"notification\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype StatusBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type StatusBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, StatusBadgeBaseProps>;\n\nexport type StatusBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: StatusBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const StatusBadge: StatusBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: StatusBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"status\" />;\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './Tag.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TagOwnProps = {\n /** HTML-elementet eller React-komponenten som rendres\n * @default 'div'\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /**Mindre og mer kompakt Tag, til f.eks. tabellbruk\n * @default false\n */\n compact?: boolean;\n children: React.ReactNode;\n};\n\nexport type TagProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, TagOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Tag = <E extends React.ElementType = typeof defaultElement>({\n className,\n children,\n compact,\n as,\n ...rest\n}: TagProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const childrenArray = React.Children.toArray(children);\n const hasLeadingIcon =\n childrenArray.length > 1 && typeof childrenArray[0] !== 'string';\n const hasTrailingIcon =\n childrenArray.length > 1 &&\n typeof childrenArray[childrenArray.length - 1] !== 'string';\n\n return (\n <Element\n className={classNames('eds-tag', className, {\n 'eds-tag--leading-icon': hasLeadingIcon,\n 'eds-tag--trailing-icon': hasTrailingIcon,\n 'eds-tag--compact': compact,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n","import './styles.scss';\nimport { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('layout', 'typography');\n\nexport * from './Contrast';\nexport * from './NavigationCard';\nexport * from './BaseCard';\nexport * from './MediaCard';\nexport * from './Badge/Badge';\nexport * from './Badge/BulletBadge';\nexport * from './Badge/NotificationBadge';\nexport * from './Badge/StatusBadge';\nexport * from './Tag';\n"],"names":["defaultElement","Contrast","jsx","jsxs","Heading3","Fragment","Paragraph","Label","ConditionalWrapper","children","ForwardIcon","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"layout.cjs.js","sources":["../src/Contrast.tsx","../src/BaseCard.tsx","../src/NavigationCard.tsx","../src/MediaCard.tsx","../src/Badge/Badge.tsx","../src/Badge/BulletBadge.tsx","../src/Badge/NotificationBadge.tsx","../src/Badge/StatusBadge.tsx","../src/Tag.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport './BaseCard.scss';\n\nexport type BaseCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager Card\n * @default \"div\"\n */\n as?: 'div' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type BaseCardProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, BaseCardOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const BaseCard = <E extends React.ElementType = typeof defaultElement>({\n children,\n className,\n as,\n ...rest\n}: BaseCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-base-card', className);\n return (\n <Element className={classList} {...rest}>\n {children}\n </Element>\n );\n};\n","import React from 'react';\nimport { Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { Heading3 } from '@entur/typography';\nimport { BaseCard } from './BaseCard';\nimport './NavigationCard.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type NavigationCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager NavigationCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Valgfritt ikon som står over tittelen */\n titleIcon?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Lager en mer kompakt NavigationCard, uten ikon og beskrivende tekst\n * @default false\n */\n compact?: boolean;\n /** Beskrivelse under tittel, om ikke \"compact\" er valgt */\n children?: React.ReactNode;\n /** @deprecated eksternlenke ikon er ikke lenger støttet i NavigationCard */\n externalLink?: boolean;\n};\n\nexport type NavigationCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, NavigationCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const NavigationCard = <\n E extends React.ElementType = typeof defaultElement,\n>({\n title,\n children,\n titleIcon,\n compact = false,\n className,\n as,\n ...rest\n}: NavigationCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-navigation-card', className, {\n 'eds-base-card--red-line': compact,\n 'eds-navigation-card--compact': compact,\n });\n return (\n <BaseCard as={Element} className={classList} {...rest}>\n <div className=\"eds-navigation-card-header\">\n <div className=\"eds-navigation-card-header__content\">\n {titleIcon && (\n <div\n className=\"eds-navigation-card-header__title-icon\"\n aria-hidden=\"true\"\n >\n {titleIcon}\n </div>\n )}\n <span className=\"eds-navigation-card-header__title\">\n <Heading3 as=\"span\">{title}</Heading3>\n </span>\n </div>\n {!compact && (\n <div className=\"eds-navigation-card-header__highlight\"></div>\n )}\n </div>\n {!compact && (\n <>\n <Paragraph>{children}</Paragraph>\n </>\n )}\n </BaseCard>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { Heading3, Label, Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { BaseCard } from './BaseCard';\nimport { ForwardIcon } from '@entur/icons';\nimport './MediaCard.scss';\nimport { ConditionalWrapper, PolymorphicComponentProps } from '@entur/utils';\n\nexport type MediaCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager bunnen (under media) av MediaCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Teksten under tittelen i MediaCard */\n description?: React.ReactNode;\n /** Kategori (eller lignende) som vises over tittelen */\n category?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Det du skulle ønske som media (f.eks. bilder eller video) */\n children?: React.ReactNode;\n /** Styling som sendes til komponenten */\n style?: CSSProperties;\n /** Hvilken heading som brukes for tittelen.\n * Blir kun satt hvis description også er satt.\n * @default 'h2'\n */\n headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** Skjul pil-ikonet nederst til høyre\n * @default false\n */\n hideArrow?: boolean;\n /** Om MediaCard skal vises horisontalt eller vertikalt\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Props som sendes til wrapper-elementet i stedet for lenke-elementet */\n wrapperProps?: React.HTMLAttributes<HTMLElement>;\n /** @deprecated Denne prop-en har ikke lenger en funksjon.\n * Hvis du trenger å legge til props på wrapper-elementet, bruk 'wrapperProps'-prop-en\n */\n wholeCardAsElement?: boolean;\n};\n\nexport type MediaCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, MediaCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const MediaCard = <E extends React.ElementType = typeof defaultElement>({\n title,\n description,\n children,\n className,\n category,\n style,\n as,\n headingLevel = 'h2',\n wholeCardAsElement: whole,\n hideArrow,\n wrapperProps,\n orientation,\n ...rest\n}: MediaCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const Heading = Heading3;\n\n const _wrapperProps = whole\n ? { ...wrapperProps, ...rest }\n : { ...wrapperProps };\n const classList = classNames('eds-base-card, eds-media-card', className, {\n 'eds-media-card--horizontal': orientation === 'horizontal',\n });\n\n return (\n <BaseCard className={classList} style={style} {..._wrapperProps}>\n <div className=\"eds-media-card__media\">{children}</div>\n <div className=\"eds-media-card__text\">\n {category && (\n <Label className=\"eds-media-card__text__category\">{category}</Label>\n )}\n {/* we only want a heading wrapper when we also have description text */}\n <ConditionalWrapper\n condition={description !== undefined}\n wrapper={(children: React.ReactNode) => (\n <Heading as={headingLevel} className=\"eds-media-card__text__title\">\n {children}\n </Heading>\n )}\n >\n <Element\n tabIndex={0}\n className=\"eds-media-card__text__title-link\"\n {...rest}\n >\n {title}\n </Element>\n </ConditionalWrapper>\n {description !== undefined && <Paragraph>{description}</Paragraph>}\n {!hideArrow && (\n <ForwardIcon\n className=\"eds-media-card__arrow-icon\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n </BaseCard>\n );\n};\n\nexport default MediaCard;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\nimport './Badge.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\nexport type BadgeTypes = 'status' | 'bullet' | 'notification';\n\nexport type BadgeOwnProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: 'span' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n type?: BadgeTypes;\n /** @deprecated Bruk `hide` i stedet */\n invisible?: boolean;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BadgeOwnProps>;\n\nexport type BadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const Badge: BadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n {\n children,\n className,\n max = 99,\n variant,\n showZero = false,\n invisible: invisibleProp = false,\n hide: hideProp = false,\n as,\n type = 'status',\n ...rest\n }: BadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element: React.ElementType = as || defaultElement;\n\n const computedHide =\n hideProp ||\n invisibleProp ||\n (children === 0 && !showZero) ||\n children == null;\n\n let displayValue;\n if (typeof children === 'number') {\n displayValue = children > max ? `${max}+` : children;\n } else {\n displayValue = children;\n }\n\n const classList = classNames(\n className,\n 'eds-badge',\n {\n 'eds-badge--hide': computedHide,\n 'eds-badge--show-zero': showZero,\n },\n `eds-badge--variant-${variant}`,\n `eds-badge--type-${type}`,\n );\n\n return (\n <Element className={classList} ref={ref} {...rest}>\n {displayValue}\n </Element>\n );\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype BulletBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BulletBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BulletBadgeBaseProps>;\n\nexport type BulletBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BulletBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const BulletBadge: BulletBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: BulletBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"bullet\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype NotificationBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type NotificationBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, NotificationBadgeBaseProps>;\n\nexport type NotificationBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: NotificationBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const NotificationBadge: NotificationBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: NotificationBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"notification\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype StatusBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type StatusBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, StatusBadgeBaseProps>;\n\nexport type StatusBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: StatusBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const StatusBadge: StatusBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: StatusBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"status\" />;\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './Tag.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TagOwnProps = {\n /** HTML-elementet eller React-komponenten som rendres\n * @default 'div'\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /**Mindre og mer kompakt Tag, til f.eks. tabellbruk\n * @default false\n */\n compact?: boolean;\n children: React.ReactNode;\n};\n\nexport type TagProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, TagOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Tag = <E extends React.ElementType = typeof defaultElement>({\n className,\n children,\n compact,\n as,\n ...rest\n}: TagProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const childrenArray = React.Children.toArray(children);\n const hasLeadingIcon =\n childrenArray.length > 1 && typeof childrenArray[0] !== 'string';\n const hasTrailingIcon =\n childrenArray.length > 1 &&\n typeof childrenArray[childrenArray.length - 1] !== 'string';\n\n return (\n <Element\n className={classNames('eds-tag', className, {\n 'eds-tag--leading-icon': hasLeadingIcon,\n 'eds-tag--trailing-icon': hasTrailingIcon,\n 'eds-tag--compact': compact,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n","import './styles.scss';\nimport { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('layout', 'typography');\n\nexport * from './Contrast';\nexport * from './NavigationCard';\nexport * from './BaseCard';\nexport * from './MediaCard';\nexport * from './Badge/Badge';\nexport * from './Badge/BulletBadge';\nexport * from './Badge/NotificationBadge';\nexport * from './Badge/StatusBadge';\nexport * from './Tag';\n"],"names":["defaultElement","Contrast","jsx","jsxs","Heading3","Fragment","Paragraph","Label","ConditionalWrapper","children","ForwardIcon","warnAboutMissingStyles"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout.esm.js","sources":["../src/Contrast.tsx","../src/BaseCard.tsx","../src/NavigationCard.tsx","../src/MediaCard.tsx","../src/Badge/Badge.tsx","../src/Badge/BulletBadge.tsx","../src/Badge/NotificationBadge.tsx","../src/Badge/StatusBadge.tsx","../src/Tag.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport './BaseCard.scss';\n\nexport type BaseCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager Card\n * @default \"div\"\n */\n as?: 'div' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type BaseCardProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, BaseCardOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const BaseCard = <E extends React.ElementType = typeof defaultElement>({\n children,\n className,\n as,\n ...rest\n}: BaseCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-base-card', className);\n return (\n <Element className={classList} {...rest}>\n {children}\n </Element>\n );\n};\n","import React from 'react';\nimport { Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { Heading3 } from '@entur/typography';\nimport { BaseCard } from './BaseCard';\nimport './NavigationCard.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type NavigationCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager NavigationCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Valgfritt ikon som står over tittelen */\n titleIcon?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Lager en mer kompakt NavigationCard, uten ikon og beskrivende tekst\n * @default false\n */\n compact?: boolean;\n /** Beskrivelse under tittel, om ikke \"compact\" er valgt */\n children?: React.ReactNode;\n /** @deprecated eksternlenke ikon er ikke lenger støttet i NavigationCard */\n externalLink?: boolean;\n};\n\nexport type NavigationCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, NavigationCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const NavigationCard = <\n E extends React.ElementType = typeof defaultElement,\n>({\n title,\n children,\n titleIcon,\n compact = false,\n className,\n as,\n ...rest\n}: NavigationCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-navigation-card', className, {\n 'eds-base-card--red-line': compact,\n 'eds-navigation-card--compact': compact,\n });\n return (\n <BaseCard as={Element} className={classList} {...rest}>\n <div className=\"eds-navigation-card-header\">\n <div className=\"eds-navigation-card-header__content\">\n {titleIcon && (\n <div\n className=\"eds-navigation-card-header__title-icon\"\n aria-hidden=\"true\"\n >\n {titleIcon}\n </div>\n )}\n <span className=\"eds-navigation-card-header__title\">\n <Heading3 as=\"span\">{title}</Heading3>\n </span>\n </div>\n {!compact && (\n <div className=\"eds-navigation-card-header__highlight\"></div>\n )}\n </div>\n {!compact && (\n <>\n <Paragraph>{children}</Paragraph>\n </>\n )}\n </BaseCard>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { Paragraph, Label, Heading3 } from '@entur/typography';\nimport classNames from 'classnames';\nimport { BaseCard } from './BaseCard';\nimport { ForwardIcon } from '@entur/icons';\nimport './MediaCard.scss';\nimport { ConditionalWrapper, PolymorphicComponentProps } from '@entur/utils';\n\nexport type MediaCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager bunnen (under media) av MediaCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Teksten under tittelen i MediaCard */\n description?: React.ReactNode;\n /** Kategori (eller lignende) som vises over tittelen */\n category?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Det du skulle ønske som media (f.eks. bilder eller video) */\n children?: React.ReactNode;\n /** Styling som sendes til komponenten */\n style?: CSSProperties;\n /** Hvilken heading som brukes for tittelen.\n * Blir kun satt hvis description også er satt.\n * @default 'h2'\n */\n headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** Skjul pil-ikonet nederst til høyre\n * @default false\n */\n hideArrow?: boolean;\n /** Om MediaCard skal vises horisontalt eller vertikalt\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Props som sendes til wrapper-elementet i stedet for lenke-elementet */\n wrapperProps?: React.HTMLAttributes<HTMLElement>;\n /** @deprecated Denne prop-en har ikke lenger en funksjon.\n * Hvis du trenger å legge til props på wrapper-elementet, bruk 'wrapperProps'-prop-en\n */\n wholeCardAsElement?: boolean;\n};\n\nexport type MediaCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, MediaCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const MediaCard = <E extends React.ElementType = typeof defaultElement>({\n title,\n description,\n children,\n className,\n category,\n style,\n as,\n headingLevel = 'h2',\n wholeCardAsElement: whole,\n hideArrow,\n wrapperProps,\n orientation,\n ...rest\n}: MediaCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const Heading = Heading3;\n\n const _wrapperProps = whole\n ? { ...wrapperProps, ...rest }\n : { ...wrapperProps };\n const classList = classNames('eds-base-card, eds-media-card', className, {\n 'eds-media-card--horizontal': orientation === 'horizontal',\n });\n\n return (\n <BaseCard className={classList} style={style} {..._wrapperProps}>\n <div className=\"eds-media-card__media\">{children}</div>\n <div className=\"eds-media-card__text\">\n {category && (\n <Label className=\"eds-media-card__text__category\">{category}</Label>\n )}\n {/* we only want a heading wrapper when we also have description text */}\n <ConditionalWrapper\n condition={description !== undefined}\n wrapper={(children: React.ReactNode) => (\n <Heading as={headingLevel} className=\"eds-media-card__text__title\">\n {children}\n </Heading>\n )}\n >\n <Element\n tabIndex={0}\n className=\"eds-media-card__text__title-link\"\n {...rest}\n >\n {title}\n </Element>\n </ConditionalWrapper>\n {description !== undefined && <Paragraph>{description}</Paragraph>}\n {!hideArrow && (\n <ForwardIcon\n className=\"eds-media-card__arrow-icon\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n </BaseCard>\n );\n};\n\nexport default MediaCard;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\nimport './Badge.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\nexport type BadgeTypes = 'status' | 'bullet' | 'notification';\n\nexport type BadgeOwnProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: 'span' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n type?: BadgeTypes;\n /** @deprecated Bruk `hide` i stedet */\n invisible?: boolean;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BadgeOwnProps>;\n\nexport type BadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const Badge: BadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n {\n children,\n className,\n max = 99,\n variant,\n showZero = false,\n invisible: invisibleProp = false,\n hide: hideProp = false,\n as,\n type = 'status',\n ...rest\n }: BadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element: React.ElementType = as || defaultElement;\n\n const computedHide =\n hideProp ||\n invisibleProp ||\n (children === 0 && !showZero) ||\n children == null;\n\n let displayValue;\n if (typeof children === 'number') {\n displayValue = children > max ? `${max}+` : children;\n } else {\n displayValue = children;\n }\n\n const classList = classNames(\n className,\n 'eds-badge',\n {\n 'eds-badge--hide': computedHide,\n 'eds-badge--show-zero': showZero,\n },\n `eds-badge--variant-${variant}`,\n `eds-badge--type-${type}`,\n );\n\n return (\n <Element className={classList} ref={ref} {...rest}>\n {displayValue}\n </Element>\n );\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype BulletBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BulletBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BulletBadgeBaseProps>;\n\nexport type BulletBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BulletBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const BulletBadge: BulletBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: BulletBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"bullet\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype NotificationBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type NotificationBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, NotificationBadgeBaseProps>;\n\nexport type NotificationBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: NotificationBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const NotificationBadge: NotificationBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: NotificationBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"notification\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype StatusBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type StatusBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, StatusBadgeBaseProps>;\n\nexport type StatusBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: StatusBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const StatusBadge: StatusBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: StatusBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"status\" />;\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './Tag.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TagOwnProps = {\n /** HTML-elementet eller React-komponenten som rendres\n * @default 'div'\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /**Mindre og mer kompakt Tag, til f.eks. tabellbruk\n * @default false\n */\n compact?: boolean;\n children: React.ReactNode;\n};\n\nexport type TagProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, TagOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Tag = <E extends React.ElementType = typeof defaultElement>({\n className,\n children,\n compact,\n as,\n ...rest\n}: TagProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const childrenArray = React.Children.toArray(children);\n const hasLeadingIcon =\n childrenArray.length > 1 && typeof childrenArray[0] !== 'string';\n const hasTrailingIcon =\n childrenArray.length > 1 &&\n typeof childrenArray[childrenArray.length - 1] !== 'string';\n\n return (\n <Element\n className={classNames('eds-tag', className, {\n 'eds-tag--leading-icon': hasLeadingIcon,\n 'eds-tag--trailing-icon': hasTrailingIcon,\n 'eds-tag--compact': compact,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n","import './styles.scss';\nimport { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('layout', 'typography');\n\nexport * from './Contrast';\nexport * from './NavigationCard';\nexport * from './BaseCard';\nexport * from './MediaCard';\nexport * from './Badge/Badge';\nexport * from './Badge/BulletBadge';\nexport * from './Badge/NotificationBadge';\nexport * from './Badge/StatusBadge';\nexport * from './Tag';\n"],"names":["defaultElement","Contrast","children"],"mappings":"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"}
1
+ {"version":3,"file":"layout.esm.js","sources":["../src/Contrast.tsx","../src/BaseCard.tsx","../src/NavigationCard.tsx","../src/MediaCard.tsx","../src/Badge/Badge.tsx","../src/Badge/BulletBadge.tsx","../src/Badge/NotificationBadge.tsx","../src/Badge/StatusBadge.tsx","../src/Tag.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport './BaseCard.scss';\n\nexport type BaseCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager Card\n * @default \"div\"\n */\n as?: 'div' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type BaseCardProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, BaseCardOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const BaseCard = <E extends React.ElementType = typeof defaultElement>({\n children,\n className,\n as,\n ...rest\n}: BaseCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-base-card', className);\n return (\n <Element className={classList} {...rest}>\n {children}\n </Element>\n );\n};\n","import React from 'react';\nimport { Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { Heading3 } from '@entur/typography';\nimport { BaseCard } from './BaseCard';\nimport './NavigationCard.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type NavigationCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager NavigationCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Valgfritt ikon som står over tittelen */\n titleIcon?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Lager en mer kompakt NavigationCard, uten ikon og beskrivende tekst\n * @default false\n */\n compact?: boolean;\n /** Beskrivelse under tittel, om ikke \"compact\" er valgt */\n children?: React.ReactNode;\n /** @deprecated eksternlenke ikon er ikke lenger støttet i NavigationCard */\n externalLink?: boolean;\n};\n\nexport type NavigationCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, NavigationCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const NavigationCard = <\n E extends React.ElementType = typeof defaultElement,\n>({\n title,\n children,\n titleIcon,\n compact = false,\n className,\n as,\n ...rest\n}: NavigationCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const classList = classNames('eds-navigation-card', className, {\n 'eds-base-card--red-line': compact,\n 'eds-navigation-card--compact': compact,\n });\n return (\n <BaseCard as={Element} className={classList} {...rest}>\n <div className=\"eds-navigation-card-header\">\n <div className=\"eds-navigation-card-header__content\">\n {titleIcon && (\n <div\n className=\"eds-navigation-card-header__title-icon\"\n aria-hidden=\"true\"\n >\n {titleIcon}\n </div>\n )}\n <span className=\"eds-navigation-card-header__title\">\n <Heading3 as=\"span\">{title}</Heading3>\n </span>\n </div>\n {!compact && (\n <div className=\"eds-navigation-card-header__highlight\"></div>\n )}\n </div>\n {!compact && (\n <>\n <Paragraph>{children}</Paragraph>\n </>\n )}\n </BaseCard>\n );\n};\n","import React, { CSSProperties } from 'react';\nimport { Heading3, Label, Paragraph } from '@entur/typography';\nimport classNames from 'classnames';\nimport { BaseCard } from './BaseCard';\nimport { ForwardIcon } from '@entur/icons';\nimport './MediaCard.scss';\nimport { ConditionalWrapper, PolymorphicComponentProps } from '@entur/utils';\n\nexport type MediaCardOwnProps = {\n /** HTML-elementet eller React-komponenten som lager bunnen (under media) av MediaCard\n * @default 'a'\n */\n as?: 'a' | 'button' | React.ElementType;\n /** Tittelen/teksten som står i CardBox */\n title: string;\n /** Teksten under tittelen i MediaCard */\n description?: React.ReactNode;\n /** Kategori (eller lignende) som vises over tittelen */\n category?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Det du skulle ønske som media (f.eks. bilder eller video) */\n children?: React.ReactNode;\n /** Styling som sendes til komponenten */\n style?: CSSProperties;\n /** Hvilken heading som brukes for tittelen.\n * Blir kun satt hvis description også er satt.\n * @default 'h2'\n */\n headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** Skjul pil-ikonet nederst til høyre\n * @default false\n */\n hideArrow?: boolean;\n /** Om MediaCard skal vises horisontalt eller vertikalt\n * @default 'vertical'\n */\n orientation?: 'horizontal' | 'vertical';\n /** Props som sendes til wrapper-elementet i stedet for lenke-elementet */\n wrapperProps?: React.HTMLAttributes<HTMLElement>;\n /** @deprecated Denne prop-en har ikke lenger en funksjon.\n * Hvis du trenger å legge til props på wrapper-elementet, bruk 'wrapperProps'-prop-en\n */\n wholeCardAsElement?: boolean;\n};\n\nexport type MediaCardProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, MediaCardOwnProps>;\n\nconst defaultElement = 'a';\n\nexport const MediaCard = <E extends React.ElementType = typeof defaultElement>({\n title,\n description,\n children,\n className,\n category,\n style,\n as,\n headingLevel = 'h2',\n wholeCardAsElement: whole,\n hideArrow,\n wrapperProps,\n orientation,\n ...rest\n}: MediaCardProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const Heading = Heading3;\n\n const _wrapperProps = whole\n ? { ...wrapperProps, ...rest }\n : { ...wrapperProps };\n const classList = classNames('eds-base-card, eds-media-card', className, {\n 'eds-media-card--horizontal': orientation === 'horizontal',\n });\n\n return (\n <BaseCard className={classList} style={style} {..._wrapperProps}>\n <div className=\"eds-media-card__media\">{children}</div>\n <div className=\"eds-media-card__text\">\n {category && (\n <Label className=\"eds-media-card__text__category\">{category}</Label>\n )}\n {/* we only want a heading wrapper when we also have description text */}\n <ConditionalWrapper\n condition={description !== undefined}\n wrapper={(children: React.ReactNode) => (\n <Heading as={headingLevel} className=\"eds-media-card__text__title\">\n {children}\n </Heading>\n )}\n >\n <Element\n tabIndex={0}\n className=\"eds-media-card__text__title-link\"\n {...rest}\n >\n {title}\n </Element>\n </ConditionalWrapper>\n {description !== undefined && <Paragraph>{description}</Paragraph>}\n {!hideArrow && (\n <ForwardIcon\n className=\"eds-media-card__arrow-icon\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n </BaseCard>\n );\n};\n\nexport default MediaCard;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\nimport './Badge.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\nexport type BadgeTypes = 'status' | 'bullet' | 'notification';\n\nexport type BadgeOwnProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: 'span' | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n type?: BadgeTypes;\n /** @deprecated Bruk `hide` i stedet */\n invisible?: boolean;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BadgeOwnProps>;\n\nexport type BadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const Badge: BadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n {\n children,\n className,\n max = 99,\n variant,\n showZero = false,\n invisible: invisibleProp = false,\n hide: hideProp = false,\n as,\n type = 'status',\n ...rest\n }: BadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element: React.ElementType = as || defaultElement;\n\n const computedHide =\n hideProp ||\n invisibleProp ||\n (children === 0 && !showZero) ||\n children == null;\n\n let displayValue;\n if (typeof children === 'number') {\n displayValue = children > max ? `${max}+` : children;\n } else {\n displayValue = children;\n }\n\n const classList = classNames(\n className,\n 'eds-badge',\n {\n 'eds-badge--hide': computedHide,\n 'eds-badge--show-zero': showZero,\n },\n `eds-badge--variant-${variant}`,\n `eds-badge--type-${type}`,\n );\n\n return (\n <Element className={classList} ref={ref} {...rest}>\n {displayValue}\n </Element>\n );\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype BulletBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type BulletBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, BulletBadgeBaseProps>;\n\nexport type BulletBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: BulletBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const BulletBadge: BulletBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: BulletBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"bullet\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype NotificationBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Om 0 skal vises\n * @default false\n */\n showZero?: boolean;\n /** Hva som er høyeste tallet før det legges på \"+\"\n * @default ++\n */\n max?: number;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type NotificationBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, NotificationBadgeBaseProps>;\n\nexport type NotificationBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: NotificationBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const NotificationBadge: NotificationBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: NotificationBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"notification\" />;\n },\n);\n","import React from 'react';\nimport { Badge } from './Badge';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst danger = 'danger';\n\ntype StatusBadgeBaseProps = {\n /** Elementet som wrapper badgen\n * @default \"span\"\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /** Elementet som badge vil legges relativt til */\n children: React.ReactNode;\n /** Hvilken type badge man vil ha */\n variant: 'primary' | 'neutral' | VariantType | typeof danger | typeof info;\n /** Skjul badge */\n hide?: boolean;\n};\n\nexport type StatusBadgeProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, StatusBadgeBaseProps>;\n\nexport type StatusBadgeComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: StatusBadgeProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'span';\n\nexport const StatusBadge: StatusBadgeComponent = React.forwardRef(\n <T extends React.ElementType = typeof defaultElement>(\n props: StatusBadgeProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const Element = props.as || defaultElement;\n // @ts-expect-error type error due to props not being BadgeOwnProps\n return <Badge as={Element} {...props} ref={ref} type=\"status\" />;\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport './Tag.scss';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type TagOwnProps = {\n /** HTML-elementet eller React-komponenten som rendres\n * @default 'div'\n */\n as?: string | React.ElementType;\n /** Ekstra klassenavn */\n className?: string;\n /**Mindre og mer kompakt Tag, til f.eks. tabellbruk\n * @default false\n */\n compact?: boolean;\n children: React.ReactNode;\n};\n\nexport type TagProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, TagOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Tag = <E extends React.ElementType = typeof defaultElement>({\n className,\n children,\n compact,\n as,\n ...rest\n}: TagProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n const childrenArray = React.Children.toArray(children);\n const hasLeadingIcon =\n childrenArray.length > 1 && typeof childrenArray[0] !== 'string';\n const hasTrailingIcon =\n childrenArray.length > 1 &&\n typeof childrenArray[childrenArray.length - 1] !== 'string';\n\n return (\n <Element\n className={classNames('eds-tag', className, {\n 'eds-tag--leading-icon': hasLeadingIcon,\n 'eds-tag--trailing-icon': hasTrailingIcon,\n 'eds-tag--compact': compact,\n })}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n","import './styles.scss';\nimport { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('layout', 'typography');\n\nexport * from './Contrast';\nexport * from './NavigationCard';\nexport * from './BaseCard';\nexport * from './MediaCard';\nexport * from './Badge/Badge';\nexport * from './Badge/BulletBadge';\nexport * from './Badge/NotificationBadge';\nexport * from './Badge/StatusBadge';\nexport * from './Tag';\n"],"names":["defaultElement","Contrast","children"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/layout",
3
- "version": "3.4.2",
3
+ "version": "3.6.0",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/layout.cjs.js",
6
6
  "module": "dist/layout.esm.js",
@@ -43,18 +43,17 @@
43
43
  "build": "yarn build:main && yarn build:beta",
44
44
  "build:main": "vite build",
45
45
  "build:beta": "vite build --config vite.config.beta.ts",
46
- "test": "jest",
47
- "lint": "eslint src"
46
+ "test": "jest"
48
47
  },
49
48
  "peerDependencies": {
50
49
  "react": ">=16.8.0",
51
50
  "react-dom": ">=16.8.0"
52
51
  },
53
52
  "dependencies": {
54
- "@entur/icons": "^8.4.3",
55
- "@entur/tokens": "^3.22.2",
56
- "@entur/typography": "^2.1.4",
57
- "@entur/utils": "^0.13.1",
53
+ "@entur/icons": "^8.4.5",
54
+ "@entur/tokens": "^3.22.4",
55
+ "@entur/typography": "^2.1.6",
56
+ "@entur/utils": "^0.13.3",
58
57
  "classnames": "^2.5.1"
59
58
  },
60
59
  "devDependencies": {
@@ -62,7 +61,6 @@
62
61
  "@testing-library/react": "^10.4.9",
63
62
  "@testing-library/user-event": "14.6.1",
64
63
  "@vitejs/plugin-react": "^5.0.1",
65
- "eslint": "^7.32.0",
66
64
  "jest": "^29.0.0",
67
65
  "jest-environment-jsdom": "^29.0.0",
68
66
  "ts-jest": "^29.0.0",
@@ -70,5 +68,5 @@
70
68
  "vite": "^7.1.3",
71
69
  "vite-plugin-dts": "^4.5.4"
72
70
  },
73
- "gitHead": "ee1f35746ed0ce1e2ab24377ec9d1bb78f6fabac"
71
+ "gitHead": "f103a7b4fef3dc0ce47ce4b0e06a8d4062ba1cc5"
74
72
  }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const classNames = require("classnames");
6
- const defaultElement = "div";
7
- const Contrast = React.forwardRef(function Contrast2({ className, as, ...rest }, ref) {
8
- const Element = as || defaultElement;
9
- return /* @__PURE__ */ jsxRuntime.jsx(ContrastContext.Provider, { value: true, children: /* @__PURE__ */ jsxRuntime.jsx(
10
- Element,
11
- {
12
- className: classNames("eds-contrast", className),
13
- ref,
14
- ...rest
15
- }
16
- ) });
17
- });
18
- const ContrastContext = React.createContext(false);
19
- exports.Contrast = Contrast;
20
- exports.ContrastContext = ContrastContext;
21
- //# sourceMappingURL=Contrast.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Contrast.cjs","sources":["../../../src/Contrast.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n"],"names":["Contrast","jsx"],"mappings":";;;;;AAkBA,MAAM,iBAAiB;AAEhB,MAAM,WAA8B,MAAM,WAAW,SAASA,UAGnE,EAAE,WAAW,IAAI,GAAG,KAAA,GACpB,KACa;AACb,QAAM,UAA6B,MAAM;AACzC,SACEC,2BAAAA,IAAC,gBAAgB,UAAhB,EAAyB,OAAO,MAC/B,UAAAA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,gBAAgB,SAAS;AAAA,MAC/C;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ,CAAC;AAEM,MAAM,kBAAkB,MAAM,cAAuB,KAAK;;;"}
@@ -1,21 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import React from "react";
3
- import classNames from "classnames";
4
- const defaultElement = "div";
5
- const Contrast = React.forwardRef(function Contrast2({ className, as, ...rest }, ref) {
6
- const Element = as || defaultElement;
7
- return /* @__PURE__ */ jsx(ContrastContext.Provider, { value: true, children: /* @__PURE__ */ jsx(
8
- Element,
9
- {
10
- className: classNames("eds-contrast", className),
11
- ref,
12
- ...rest
13
- }
14
- ) });
15
- });
16
- const ContrastContext = React.createContext(false);
17
- export {
18
- Contrast,
19
- ContrastContext
20
- };
21
- //# sourceMappingURL=Contrast.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Contrast.mjs","sources":["../../../src/Contrast.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentPropsWithRef, PolymorphicRef } from '@entur/utils';\n\nexport type ContrastBaseProps = {\n /** Ekstra klassenavn */\n className?: string;\n};\n\nexport type ContrastProps<T extends React.ElementType> =\n PolymorphicComponentPropsWithRef<T, ContrastBaseProps>;\n\nexport type ContrastComponent = <\n T extends React.ElementType = typeof defaultElement,\n>(\n props: ContrastProps<T>,\n) => React.ReactElement | null;\n\nconst defaultElement = 'div';\n\nexport const Contrast: ContrastComponent = React.forwardRef(function Contrast<\n T extends React.ElementType = typeof defaultElement,\n>(\n { className, as, ...rest }: ContrastProps<T>,\n ref: PolymorphicRef<T>,\n): JSX.Element {\n const Element: React.ElementType = as || defaultElement;\n return (\n <ContrastContext.Provider value={true}>\n <Element\n className={classNames('eds-contrast', className)}\n ref={ref}\n {...rest}\n />\n </ContrastContext.Provider>\n );\n});\n\nexport const ContrastContext = React.createContext<boolean>(false);\n\nexport const useContrast: () => boolean = () =>\n React.useContext(ContrastContext);\n"],"names":["Contrast"],"mappings":";;;AAkBA,MAAM,iBAAiB;AAEhB,MAAM,WAA8B,MAAM,WAAW,SAASA,UAGnE,EAAE,WAAW,IAAI,GAAG,KAAA,GACpB,KACa;AACb,QAAM,UAA6B,MAAM;AACzC,SACE,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,MAC/B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,gBAAgB,SAAS;AAAA,MAC/C;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ,CAAC;AAEM,MAAM,kBAAkB,MAAM,cAAuB,KAAK;"}