@entur/layout 3.3.3 → 3.4.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.
Files changed (78) hide show
  1. package/dist/beta/cjs/Contrast.cjs +21 -0
  2. package/dist/beta/cjs/Contrast.cjs.map +1 -0
  3. package/dist/beta/cjs/Flex/Flex.cjs +111 -0
  4. package/dist/beta/cjs/Flex/Flex.cjs.map +1 -0
  5. package/dist/beta/cjs/Flex/FlexSpacer.cjs +25 -0
  6. package/dist/beta/cjs/Flex/FlexSpacer.cjs.map +1 -0
  7. package/dist/beta/cjs/Flex/index.cjs +12 -0
  8. package/dist/beta/cjs/Flex/index.cjs.map +1 -0
  9. package/dist/beta/cjs/Grid/Grid.cjs +80 -0
  10. package/dist/beta/cjs/Grid/Grid.cjs.map +1 -0
  11. package/dist/beta/cjs/Grid/GridItem.cjs +49 -0
  12. package/dist/beta/cjs/Grid/GridItem.cjs.map +1 -0
  13. package/dist/beta/cjs/Grid/index.cjs +12 -0
  14. package/dist/beta/cjs/Grid/index.cjs.map +1 -0
  15. package/dist/beta/cjs/LayoutWrapper/LayoutWrapper.cjs +31 -0
  16. package/dist/beta/cjs/LayoutWrapper/LayoutWrapper.cjs.map +1 -0
  17. package/dist/beta/cjs/LayoutWrapper/useLayoutValues.cjs +15 -0
  18. package/dist/beta/cjs/LayoutWrapper/useLayoutValues.cjs.map +1 -0
  19. package/dist/beta/cjs/LayoutWrapper/useResponsiveValue.cjs +78 -0
  20. package/dist/beta/cjs/LayoutWrapper/useResponsiveValue.cjs.map +1 -0
  21. package/dist/beta/cjs/LayoutWrapper/utils.cjs +49 -0
  22. package/dist/beta/cjs/LayoutWrapper/utils.cjs.map +1 -0
  23. package/dist/beta/cjs/index.cjs +18 -0
  24. package/dist/beta/cjs/index.cjs.map +1 -0
  25. package/dist/beta/cjs/templates/Sidebar.cjs +90 -0
  26. package/dist/beta/cjs/templates/Sidebar.cjs.map +1 -0
  27. package/dist/beta/cjs/templates/index.cjs +8 -0
  28. package/dist/beta/cjs/templates/index.cjs.map +1 -0
  29. package/dist/beta/cjs/templates/portal/Portal.cjs +51 -0
  30. package/dist/beta/cjs/templates/portal/Portal.cjs.map +1 -0
  31. package/dist/beta/esm/Contrast.mjs +21 -0
  32. package/dist/beta/esm/Contrast.mjs.map +1 -0
  33. package/dist/beta/esm/Flex/Flex.mjs +111 -0
  34. package/dist/beta/esm/Flex/Flex.mjs.map +1 -0
  35. package/dist/beta/esm/Flex/FlexSpacer.mjs +25 -0
  36. package/dist/beta/esm/Flex/FlexSpacer.mjs.map +1 -0
  37. package/dist/beta/esm/Flex/index.mjs +12 -0
  38. package/dist/beta/esm/Flex/index.mjs.map +1 -0
  39. package/dist/beta/esm/Grid/Grid.mjs +80 -0
  40. package/dist/beta/esm/Grid/Grid.mjs.map +1 -0
  41. package/dist/beta/esm/Grid/GridItem.mjs +49 -0
  42. package/dist/beta/esm/Grid/GridItem.mjs.map +1 -0
  43. package/dist/beta/esm/Grid/index.mjs +12 -0
  44. package/dist/beta/esm/Grid/index.mjs.map +1 -0
  45. package/dist/beta/esm/LayoutWrapper/LayoutWrapper.mjs +31 -0
  46. package/dist/beta/esm/LayoutWrapper/LayoutWrapper.mjs.map +1 -0
  47. package/dist/beta/esm/LayoutWrapper/useLayoutValues.mjs +15 -0
  48. package/dist/beta/esm/LayoutWrapper/useLayoutValues.mjs.map +1 -0
  49. package/dist/beta/esm/LayoutWrapper/useResponsiveValue.mjs +78 -0
  50. package/dist/beta/esm/LayoutWrapper/useResponsiveValue.mjs.map +1 -0
  51. package/dist/beta/esm/LayoutWrapper/utils.mjs +49 -0
  52. package/dist/beta/esm/LayoutWrapper/utils.mjs.map +1 -0
  53. package/dist/beta/esm/index.mjs +18 -0
  54. package/dist/beta/esm/index.mjs.map +1 -0
  55. package/dist/beta/esm/templates/Sidebar.mjs +90 -0
  56. package/dist/beta/esm/templates/Sidebar.mjs.map +1 -0
  57. package/dist/beta/esm/templates/index.mjs +8 -0
  58. package/dist/beta/esm/templates/index.mjs.map +1 -0
  59. package/dist/beta/esm/templates/portal/Portal.mjs +51 -0
  60. package/dist/beta/esm/templates/portal/Portal.mjs.map +1 -0
  61. package/dist/beta/styles/index.css +197 -0
  62. package/dist/beta/types/Flex/Flex.d.ts +65 -0
  63. package/dist/beta/types/Flex/FlexSpacer.d.ts +16 -0
  64. package/dist/beta/types/Flex/index.d.ts +24 -0
  65. package/dist/beta/types/Grid/Grid.d.ts +46 -0
  66. package/dist/beta/types/Grid/GridItem.d.ts +28 -0
  67. package/dist/beta/types/Grid/index.d.ts +29 -0
  68. package/dist/beta/types/LayoutWrapper/LayoutWrapper.d.ts +13 -0
  69. package/dist/beta/types/LayoutWrapper/index.d.ts +6 -0
  70. package/dist/beta/types/LayoutWrapper/useLayoutValues.d.ts +2 -0
  71. package/dist/beta/types/LayoutWrapper/useResponsiveValue.d.ts +2 -0
  72. package/dist/beta/types/LayoutWrapper/utils.d.ts +15 -0
  73. package/dist/beta/types/index.d.ts +7 -0
  74. package/dist/beta/types/templates/Sidebar.d.ts +21 -0
  75. package/dist/beta/types/templates/index.d.ts +7 -0
  76. package/dist/beta/types/templates/portal/Portal.d.ts +12 -0
  77. package/dist/beta/types/templates/portal/index.d.ts +2 -0
  78. package/package.json +27 -3
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const classNames = require("classnames");
5
+ const Contrast = require("../Contrast.cjs");
6
+ const index$1 = require("../Flex/index.cjs");
7
+ const index = require("../Grid/index.cjs");
8
+ ;/* empty css */
9
+ const SidebarLogo = ({ children, ...rest }) => {
10
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, children });
11
+ };
12
+ const SidebarUser = ({ children, ...rest }) => {
13
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, children });
14
+ };
15
+ const SidebarData = ({ children, ...rest }) => {
16
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, children });
17
+ };
18
+ const SidebarNavigation = ({
19
+ children,
20
+ className,
21
+ ...rest
22
+ }) => {
23
+ return /* @__PURE__ */ jsxRuntime.jsx(
24
+ "nav",
25
+ {
26
+ className: classNames(
27
+ "eds-layout-template-sidebar__navigation",
28
+ className
29
+ ),
30
+ ...rest,
31
+ children
32
+ }
33
+ );
34
+ };
35
+ const SidebarFooter = ({
36
+ children,
37
+ className,
38
+ ...rest
39
+ }) => {
40
+ return /* @__PURE__ */ jsxRuntime.jsx(
41
+ "footer",
42
+ {
43
+ className: classNames("eds-layout-template-sidebar__footer", className),
44
+ ...rest,
45
+ children
46
+ }
47
+ );
48
+ };
49
+ const SidebarRoot = ({
50
+ children,
51
+ className,
52
+ style,
53
+ contrast = true,
54
+ ...rest
55
+ }) => {
56
+ const WrapperElement = contrast ? Contrast.Contrast : "div";
57
+ return /* @__PURE__ */ jsxRuntime.jsx(index.GridComponent.Item, { as: WrapperElement, colSpan: "1 / 2", rowSpan: "1 / 2", children: /* @__PURE__ */ jsxRuntime.jsx(
58
+ index$1.FlexComponent,
59
+ {
60
+ as: "aside",
61
+ direction: "column",
62
+ gap: "m",
63
+ className: classNames(
64
+ "eds-layout-template-sidebar",
65
+ {
66
+ "eds-layout-template-sidebar--plain": !contrast
67
+ },
68
+ className
69
+ ),
70
+ style,
71
+ ...rest,
72
+ children
73
+ }
74
+ ) });
75
+ };
76
+ const Sidebar = Object.assign(SidebarRoot, {
77
+ Logo: SidebarLogo,
78
+ User: SidebarUser,
79
+ Data: SidebarData,
80
+ Navigation: SidebarNavigation,
81
+ Footer: SidebarFooter
82
+ });
83
+ Sidebar.displayName = "Template.Portal.Sidebar";
84
+ Sidebar.Logo.displayName = "Template.Portal.Sidebar.Logo";
85
+ Sidebar.User.displayName = "Template.Portal.Sidebar.User";
86
+ Sidebar.Data.displayName = "Template.Portal.Sidebar.Data";
87
+ Sidebar.Navigation.displayName = "Template.Portal.Sidebar.Navigation";
88
+ Sidebar.Footer.displayName = "Template.Portal.Sidebar.Footer";
89
+ exports.Sidebar = Sidebar;
90
+ //# sourceMappingURL=Sidebar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.cjs","sources":["../../../../src/beta/templates/Sidebar.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { Contrast } from '../../Contrast';\nimport { Flex } from '../Flex';\nimport { Grid } from '../Grid';\nimport './Sidebar.scss';\n\nexport type SidebarProps = React.HTMLAttributes<HTMLElement> & {\n /** Toggle contrast styling for the sidebar */\n contrast?: boolean;\n};\n\nexport type SidebarSectionProps = React.HTMLAttributes<HTMLElement>;\n\nconst SidebarLogo: React.FC<SidebarSectionProps> = ({ children, ...rest }) => {\n return <div {...rest}>{children}</div>;\n};\n\nconst SidebarUser: React.FC<SidebarSectionProps> = ({ children, ...rest }) => {\n return <div {...rest}>{children}</div>;\n};\n\nconst SidebarData: React.FC<SidebarSectionProps> = ({ children, ...rest }) => {\n return <div {...rest}>{children}</div>;\n};\n\nconst SidebarNavigation: React.FC<SidebarSectionProps> = ({\n children,\n className,\n ...rest\n}) => {\n return (\n <nav\n className={classNames(\n 'eds-layout-template-sidebar__navigation',\n className,\n )}\n {...rest}\n >\n {children}\n </nav>\n );\n};\n\nconst SidebarFooter: React.FC<SidebarSectionProps> = ({\n children,\n className,\n ...rest\n}) => {\n return (\n <footer\n className={classNames('eds-layout-template-sidebar__footer', className)}\n {...rest}\n >\n {children}\n </footer>\n );\n};\n\nconst SidebarRoot: React.FC<SidebarProps> = ({\n children,\n className,\n style,\n contrast = true,\n ...rest\n}) => {\n const WrapperElement = contrast ? Contrast : 'div';\n return (\n <Grid.Item as={WrapperElement} colSpan=\"1 / 2\" rowSpan=\"1 / 2\">\n <Flex\n as=\"aside\"\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\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":";;;;;;;;AAcA,MAAM,cAA6C,CAAC,EAAE,UAAU,GAAG,WAAW;AAC5E,SAAOA,2BAAAA,IAAC,OAAA,EAAK,GAAG,MAAO,SAAA,CAAS;AAClC;AAEA,MAAM,cAA6C,CAAC,EAAE,UAAU,GAAG,WAAW;AAC5E,SAAOA,2BAAAA,IAAC,OAAA,EAAK,GAAG,MAAO,SAAA,CAAS;AAClC;AAEA,MAAM,cAA6C,CAAC,EAAE,UAAU,GAAG,WAAW;AAC5E,SAAOA,2BAAAA,IAAC,OAAA,EAAK,GAAG,MAAO,SAAA,CAAS;AAClC;AAEA,MAAM,oBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,gBAA+C,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,uCAAuC,SAAS;AAAA,MACrE,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,cAAsC,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,MAAM;AACJ,QAAM,iBAAiB,WAAWC,SAAAA,WAAW;AAC7C,SACED,+BAACE,MAAAA,cAAK,MAAL,EAAU,IAAI,gBAAgB,SAAQ,SAAQ,SAAQ,SACrD,UAAAF,2BAAAA;AAAAA,IAACG,QAAAA;AAAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH,WAAU;AAAA,MACV,KAAI;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,sCAAsC,CAAC;AAAA,QAAA;AAAA,QAEzC;AAAA,MAAA;AAAA,MAEF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;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;;"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Portal = require("./portal/Portal.cjs");
4
+ const Template = {
5
+ Portal: Portal.Portal
6
+ };
7
+ exports.Template = Template;
8
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/beta/templates/index.ts"],"sourcesContent":["import { Portal } from './portal';\nimport type { PortalComponent, PortalMainProps, PortalProps } from './portal';\nimport type {\n SidebarComponent,\n SidebarProps,\n SidebarSectionProps,\n} from './Sidebar';\n\nexport type TemplateComponent = {\n Portal: PortalComponent;\n};\n\nexport const Template: TemplateComponent = {\n Portal,\n};\n\nexport type {\n PortalComponent,\n PortalMainProps,\n PortalProps,\n SidebarComponent,\n SidebarProps,\n SidebarSectionProps,\n};\n"],"names":["Portal"],"mappings":";;;AAYO,MAAM,WAA8B;AAAA,EAAA,QACzCA,OAAAA;AACF;;"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const classNames = require("classnames");
5
+ const index = require("../../Grid/index.cjs");
6
+ const Sidebar = require("../Sidebar.cjs");
7
+ ;/* empty css */
8
+ const PortalRoot = ({
9
+ children,
10
+ className,
11
+ style,
12
+ ...rest
13
+ }) => {
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ index.GridComponent,
16
+ {
17
+ templateColumns: "var(--eds-sidebar-width, min-content) minmax(0, 1fr)",
18
+ gap: "m",
19
+ className: classNames("eds-layout-template-portal", className),
20
+ style,
21
+ ...rest,
22
+ children
23
+ }
24
+ );
25
+ };
26
+ const PortalMain = ({
27
+ children,
28
+ className,
29
+ style,
30
+ ...rest
31
+ }) => {
32
+ return /* @__PURE__ */ jsxRuntime.jsx(
33
+ index.GridComponent.Item,
34
+ {
35
+ as: "main",
36
+ colSpan: "2 / -1",
37
+ className: classNames("eds-layout-template-portal__main", className),
38
+ style,
39
+ ...rest,
40
+ children
41
+ }
42
+ );
43
+ };
44
+ const Portal = Object.assign(PortalRoot, {
45
+ Sidebar: Sidebar.Sidebar,
46
+ Main: PortalMain
47
+ });
48
+ Portal.displayName = "Template.Portal";
49
+ Portal.Main.displayName = "Template.Portal.Main";
50
+ exports.Portal = Portal;
51
+ //# sourceMappingURL=Portal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Portal.cjs","sources":["../../../../../src/beta/templates/portal/Portal.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { Grid } from '../../Grid';\nimport { Sidebar, SidebarComponent } from '../Sidebar';\nimport './Portal.scss';\n\nexport type PortalProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type PortalMainProps = React.HTMLAttributes<HTMLElement>;\n\nconst PortalRoot: React.FC<PortalProps> = ({\n children,\n className,\n style,\n ...rest\n}) => {\n return (\n <Grid\n templateColumns=\"var(--eds-sidebar-width, min-content) minmax(0, 1fr)\"\n gap=\"m\"\n className={classNames('eds-layout-template-portal', className)}\n style={style}\n {...rest}\n >\n {children}\n </Grid>\n );\n};\n\nconst PortalMain: React.FC<PortalMainProps> = ({\n children,\n className,\n style,\n ...rest\n}) => {\n return (\n <Grid.Item\n as=\"main\"\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\nexport type PortalComponent = typeof PortalRoot & {\n Sidebar: SidebarComponent;\n Main: typeof PortalMain;\n};\n\nexport const Portal: PortalComponent = Object.assign(PortalRoot, {\n Sidebar,\n Main: PortalMain,\n});\n\nPortal.displayName = 'Template.Portal';\nPortal.Main.displayName = 'Template.Portal.Main';\n"],"names":["jsx","Grid","Sidebar"],"mappings":";;;;;;;AAUA,MAAM,aAAoC,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACEA,2BAAAA;AAAAA,IAACC,MAAAA;AAAAA,IAAA;AAAA,MACC,iBAAgB;AAAA,MAChB,KAAI;AAAA,MACJ,WAAW,WAAW,8BAA8B,SAAS;AAAA,MAC7D;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,MAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,SACED,2BAAAA;AAAAA,IAACC,MAAAA,cAAK;AAAA,IAAL;AAAA,MACC,IAAG;AAAA,MACH,SAAQ;AAAA,MACR,WAAW,WAAW,oCAAoC,SAAS;AAAA,MACnE;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAOO,MAAM,SAA0B,OAAO,OAAO,YAAY;AAAA,EAAA,SAC/DC,QAAAA;AAAAA,EACA,MAAM;AACR,CAAC;AAED,OAAO,cAAc;AACrB,OAAO,KAAK,cAAc;;"}
@@ -0,0 +1,21 @@
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
@@ -0,0 +1 @@
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;"}
@@ -0,0 +1,111 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classNames from "classnames";
3
+ import { getSpacingValue } from "../LayoutWrapper/utils.mjs";
4
+ import { useResponsiveValue } from "../LayoutWrapper/useResponsiveValue.mjs";
5
+ /* empty css */
6
+ const defaultElement = "div";
7
+ const Flex = ({
8
+ direction,
9
+ wrap,
10
+ align,
11
+ justify,
12
+ alignContent,
13
+ gap,
14
+ rowGap,
15
+ columnGap,
16
+ flex,
17
+ grow,
18
+ shrink,
19
+ basis,
20
+ width,
21
+ height,
22
+ minWidth,
23
+ minHeight,
24
+ maxWidth,
25
+ maxHeight,
26
+ as,
27
+ className,
28
+ children,
29
+ style,
30
+ ...rest
31
+ }) => {
32
+ const Element = as || defaultElement;
33
+ const resolvedDirection = useResponsiveValue(direction);
34
+ const resolvedWrap = useResponsiveValue(wrap);
35
+ const resolvedAlign = useResponsiveValue(align);
36
+ const resolvedJustify = useResponsiveValue(justify);
37
+ const resolvedAlignContent = useResponsiveValue(alignContent);
38
+ const resolvedGap = useResponsiveValue(gap);
39
+ const resolvedRowGap = useResponsiveValue(rowGap);
40
+ const resolvedColumnGap = useResponsiveValue(columnGap);
41
+ const flexStyle = {
42
+ ...resolvedDirection && {
43
+ "--flex-direction": resolvedDirection
44
+ },
45
+ ...resolvedWrap && {
46
+ "--flex-wrap": resolvedWrap
47
+ },
48
+ ...resolvedAlign && {
49
+ "--flex-align-items": resolvedAlign
50
+ },
51
+ ...resolvedJustify && {
52
+ "--flex-justify-content": resolvedJustify
53
+ },
54
+ ...resolvedAlignContent && {
55
+ "--flex-align-content": resolvedAlignContent
56
+ },
57
+ ...resolvedGap && {
58
+ "--flex-gap": getSpacingValue(resolvedGap, "Flex")
59
+ },
60
+ ...resolvedRowGap && {
61
+ "--flex-row-gap": getSpacingValue(resolvedRowGap, "Flex")
62
+ },
63
+ ...resolvedColumnGap && {
64
+ "--flex-column-gap": getSpacingValue(resolvedColumnGap, "Flex")
65
+ },
66
+ ...flex !== void 0 && {
67
+ "--flex": flex
68
+ },
69
+ ...grow !== void 0 && {
70
+ "--flex-grow": grow
71
+ },
72
+ ...shrink !== void 0 && {
73
+ "--flex-shrink": shrink
74
+ },
75
+ ...basis !== void 0 && {
76
+ "--flex-basis": basis
77
+ },
78
+ ...width && {
79
+ "--flex-width": width
80
+ },
81
+ ...height && {
82
+ "--flex-height": height
83
+ },
84
+ ...minWidth && {
85
+ "--flex-min-width": minWidth
86
+ },
87
+ ...minHeight && {
88
+ "--flex-min-height": minHeight
89
+ },
90
+ ...maxWidth && {
91
+ "--flex-max-width": maxWidth
92
+ },
93
+ ...maxHeight && {
94
+ "--flex-max-height": maxHeight
95
+ },
96
+ ...style
97
+ };
98
+ return /* @__PURE__ */ jsx(
99
+ Element,
100
+ {
101
+ className: classNames("eds-layout-flex", className),
102
+ style: flexStyle,
103
+ ...rest,
104
+ children
105
+ }
106
+ );
107
+ };
108
+ export {
109
+ Flex
110
+ };
111
+ //# sourceMappingURL=Flex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flex.mjs","sources":["../../../../src/beta/Flex/Flex.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport classNames from 'classnames';\nimport { getSpacingValue } from '../LayoutWrapper/utils';\nimport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\n\nimport './Flex.scss';\n\nexport type FlexSpacingValue = GridSpacingValue;\n\ntype FlexDirection = React.CSSProperties['flexDirection'];\ntype FlexWrap = React.CSSProperties['flexWrap'];\ntype AlignItems = React.CSSProperties['alignItems'];\ntype JustifyContent = React.CSSProperties['justifyContent'];\ntype AlignContent = React.CSSProperties['alignContent'];\ntype FlexBasis = React.CSSProperties['flexBasis'];\ntype FlexValue = React.CSSProperties['flex'];\n\nexport type FlexOwnProps = {\n /** CSS flex-direction value (supports responsive objects)\n * @default \"row\"\n */\n direction?: FlexDirection | ResponsiveValue<FlexDirection>;\n /** CSS flex-wrap value (supports responsive objects)\n * @default \"nowrap\"\n */\n wrap?: FlexWrap | ResponsiveValue<FlexWrap>;\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 /** Spacing between flex items (supports responsive objects) */\n gap?: FlexSpacingValue | ResponsiveValue<FlexSpacingValue>;\n /** Vertical spacing between rows (supports responsive objects) */\n rowGap?: FlexSpacingValue | ResponsiveValue<FlexSpacingValue>;\n /** Horizontal spacing between columns (supports responsive objects) */\n columnGap?: FlexSpacingValue | ResponsiveValue<FlexSpacingValue>;\n /** CSS flex shorthand value */\n flex?: FlexValue;\n /** CSS flex-grow value */\n grow?: number;\n /** CSS flex-shrink value */\n shrink?: number;\n /** CSS flex-basis value */\n basis?: FlexBasis;\n /** CSS width value */\n width?: string;\n /** CSS height value */\n height?: string;\n /** CSS min-width value */\n minWidth?: string;\n /** CSS min-height value */\n minHeight?: string;\n /** CSS max-width value */\n maxWidth?: string;\n /** CSS max-height value */\n maxHeight?: string;\n /** HTML element or React component used to render the Flex container\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Flex container */\n children?: React.ReactNode;\n};\n\nexport type FlexProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, FlexOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const Flex = <E extends React.ElementType = typeof defaultElement>({\n direction,\n wrap,\n align,\n justify,\n alignContent,\n gap,\n rowGap,\n columnGap,\n flex,\n grow,\n shrink,\n basis,\n width,\n height,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n as,\n className,\n children,\n style,\n ...rest\n}: FlexProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedDirection = useResponsiveValue(direction);\n const resolvedWrap = useResponsiveValue(wrap);\n const resolvedAlign = useResponsiveValue(align);\n const resolvedJustify = useResponsiveValue(justify);\n const resolvedAlignContent = useResponsiveValue(alignContent);\n const resolvedGap = useResponsiveValue(gap);\n const resolvedRowGap = useResponsiveValue(rowGap);\n const resolvedColumnGap = useResponsiveValue(columnGap);\n\n const flexStyle: React.CSSProperties = {\n ...(resolvedDirection && {\n '--flex-direction': resolvedDirection,\n }),\n ...(resolvedWrap && {\n '--flex-wrap': resolvedWrap,\n }),\n ...(resolvedAlign && {\n '--flex-align-items': resolvedAlign,\n }),\n ...(resolvedJustify && {\n '--flex-justify-content': resolvedJustify,\n }),\n ...(resolvedAlignContent && {\n '--flex-align-content': resolvedAlignContent,\n }),\n ...(resolvedGap && {\n '--flex-gap': getSpacingValue(resolvedGap, 'Flex'),\n }),\n ...(resolvedRowGap && {\n '--flex-row-gap': getSpacingValue(resolvedRowGap, 'Flex'),\n }),\n ...(resolvedColumnGap && {\n '--flex-column-gap': getSpacingValue(resolvedColumnGap, 'Flex'),\n }),\n ...(flex !== undefined && {\n '--flex': flex,\n }),\n ...(grow !== undefined && {\n '--flex-grow': grow,\n }),\n ...(shrink !== undefined && {\n '--flex-shrink': shrink,\n }),\n ...(basis !== undefined && {\n '--flex-basis': basis,\n }),\n ...(width && {\n '--flex-width': width,\n }),\n ...(height && {\n '--flex-height': height,\n }),\n ...(minWidth && {\n '--flex-min-width': minWidth,\n }),\n ...(minHeight && {\n '--flex-min-height': minHeight,\n }),\n ...(maxWidth && {\n '--flex-max-width': maxWidth,\n }),\n ...(maxHeight && {\n '--flex-max-height': maxHeight,\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n className={classNames('eds-layout-flex', className)}\n style={flexStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n"],"names":[],"mappings":";;;;;AAyEA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,CAAsD;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiC;AAC/B,QAAM,UAA6B,MAAM;AAEzC,QAAM,oBAAoB,mBAAmB,SAAS;AACtD,QAAM,eAAe,mBAAmB,IAAI;AAC5C,QAAM,gBAAgB,mBAAmB,KAAK;AAC9C,QAAM,kBAAkB,mBAAmB,OAAO;AAClD,QAAM,uBAAuB,mBAAmB,YAAY;AAC5D,QAAM,cAAc,mBAAmB,GAAG;AAC1C,QAAM,iBAAiB,mBAAmB,MAAM;AAChD,QAAM,oBAAoB,mBAAmB,SAAS;AAEtD,QAAM,YAAiC;AAAA,IACrC,GAAI,qBAAqB;AAAA,MACvB,oBAAoB;AAAA,IAAA;AAAA,IAEtB,GAAI,gBAAgB;AAAA,MAClB,eAAe;AAAA,IAAA;AAAA,IAEjB,GAAI,iBAAiB;AAAA,MACnB,sBAAsB;AAAA,IAAA;AAAA,IAExB,GAAI,mBAAmB;AAAA,MACrB,0BAA0B;AAAA,IAAA;AAAA,IAE5B,GAAI,wBAAwB;AAAA,MAC1B,wBAAwB;AAAA,IAAA;AAAA,IAE1B,GAAI,eAAe;AAAA,MACjB,cAAc,gBAAgB,aAAa,MAAM;AAAA,IAAA;AAAA,IAEnD,GAAI,kBAAkB;AAAA,MACpB,kBAAkB,gBAAgB,gBAAgB,MAAM;AAAA,IAAA;AAAA,IAE1D,GAAI,qBAAqB;AAAA,MACvB,qBAAqB,gBAAgB,mBAAmB,MAAM;AAAA,IAAA;AAAA,IAEhE,GAAI,SAAS,UAAa;AAAA,MACxB,UAAU;AAAA,IAAA;AAAA,IAEZ,GAAI,SAAS,UAAa;AAAA,MACxB,eAAe;AAAA,IAAA;AAAA,IAEjB,GAAI,WAAW,UAAa;AAAA,MAC1B,iBAAiB;AAAA,IAAA;AAAA,IAEnB,GAAI,UAAU,UAAa;AAAA,MACzB,gBAAgB;AAAA,IAAA;AAAA,IAElB,GAAI,SAAS;AAAA,MACX,gBAAgB;AAAA,IAAA;AAAA,IAElB,GAAI,UAAU;AAAA,MACZ,iBAAiB;AAAA,IAAA;AAAA,IAEnB,GAAI,YAAY;AAAA,MACd,oBAAoB;AAAA,IAAA;AAAA,IAEtB,GAAI,aAAa;AAAA,MACf,qBAAqB;AAAA,IAAA;AAAA,IAEvB,GAAI,YAAY;AAAA,MACd,oBAAoB;AAAA,IAAA;AAAA,IAEtB,GAAI,aAAa;AAAA,MACf,qBAAqB;AAAA,IAAA;AAAA,IAEvB,GAAG;AAAA,EAAA;AAGL,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,mBAAmB,SAAS;AAAA,MAClD,OAAO;AAAA,MACN,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,25 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import classNames from "classnames";
3
+ const defaultElement = "div";
4
+ const FlexSpacer = ({
5
+ as,
6
+ className,
7
+ style,
8
+ ...rest
9
+ }) => {
10
+ const Element = as || defaultElement;
11
+ return /* @__PURE__ */ jsx(
12
+ Element,
13
+ {
14
+ className: classNames("eds-layout-flex-spacer", className),
15
+ style,
16
+ ...rest,
17
+ role: "presentation",
18
+ "aria-hidden": "true"
19
+ }
20
+ );
21
+ };
22
+ export {
23
+ FlexSpacer
24
+ };
25
+ //# sourceMappingURL=FlexSpacer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlexSpacer.mjs","sources":["../../../../src/beta/Flex/FlexSpacer.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { PolymorphicComponentProps } from '@entur/utils';\n\nexport type FlexSpacerOwnProps = {\n /** HTML element or React component used to render Flex.Spacer\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class name */\n className?: string;\n /** Spacer should not render children */\n children?: never;\n};\n\nexport type FlexSpacerProps<\n T extends React.ElementType = typeof defaultElement,\n> = PolymorphicComponentProps<T, FlexSpacerOwnProps>;\n\nconst defaultElement = 'div';\n\nexport const FlexSpacer = <\n E extends React.ElementType = typeof defaultElement,\n>({\n as,\n className,\n style,\n ...rest\n}: FlexSpacerProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n return (\n <Element\n className={classNames('eds-layout-flex-spacer', className)}\n style={style}\n {...rest}\n role=\"presentation\"\n aria-hidden=\"true\"\n ></Element>\n );\n};\n"],"names":[],"mappings":";;AAmBA,MAAM,iBAAiB;AAEhB,MAAM,aAAa,CAExB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAuC;AACrC,QAAM,UAA6B,MAAM;AAEzC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,0BAA0B,SAAS;AAAA,MACzD;AAAA,MACC,GAAG;AAAA,MACJ,MAAK;AAAA,MACL,eAAY;AAAA,IAAA;AAAA,EAAA;AAGlB;"}
@@ -0,0 +1,12 @@
1
+ import { Flex } from "./Flex.mjs";
2
+ import { FlexSpacer } from "./FlexSpacer.mjs";
3
+ const FlexComponent = Object.assign(Flex, {
4
+ Spacer: FlexSpacer
5
+ });
6
+ FlexComponent.Spacer.displayName = "Flex.Spacer";
7
+ export {
8
+ FlexComponent as Flex,
9
+ FlexComponent,
10
+ FlexSpacer
11
+ };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/beta/Flex/index.ts"],"sourcesContent":["import { Flex as FlexParent } from './Flex';\nimport { FlexSpacer } from './FlexSpacer';\n\ntype Flex = typeof FlexParent & {\n /**\n * A spacer element that fills available space in Flex.\n *\n * @example\n * <Flex>\n * <Button>Left</Button>\n * <Flex.Spacer />\n * <Button>Right</Button>\n * </Flex>\n */\n Spacer: typeof FlexSpacer & { displayName?: string };\n};\n\n/**\n * A Flex component for organizing content in a flexible layout.\n */\nexport const FlexComponent: Flex = Object.assign(FlexParent, {\n Spacer: FlexSpacer,\n});\n\nFlexComponent.Spacer.displayName = 'Flex.Spacer';\n\nexport type { FlexProps, FlexOwnProps, FlexSpacingValue } from './Flex';\nexport type { FlexSpacerProps, FlexSpacerOwnProps } from './FlexSpacer';\nexport { FlexComponent as Flex, FlexSpacer };\n"],"names":["FlexParent"],"mappings":";;AAoBO,MAAM,gBAAsB,OAAO,OAAOA,MAAY;AAAA,EAC3D,QAAQ;AACV,CAAC;AAED,cAAc,OAAO,cAAc;"}
@@ -0,0 +1,80 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { getSpacingValue } from "../LayoutWrapper/utils.mjs";
3
+ import { useResponsiveValue } from "../LayoutWrapper/useResponsiveValue.mjs";
4
+ import classNames from "classnames";
5
+ /* empty css */
6
+ const defaultElement = "div";
7
+ const Grid = ({
8
+ templateColumns,
9
+ templateRows,
10
+ gap = "m",
11
+ rowGap,
12
+ columnGap,
13
+ autoFlow = "row",
14
+ align,
15
+ justify,
16
+ alignContent,
17
+ height,
18
+ as,
19
+ className,
20
+ children,
21
+ style,
22
+ ...rest
23
+ }) => {
24
+ const Element = as || defaultElement;
25
+ const resolvedTemplateColumns = useResponsiveValue(templateColumns) ?? "repeat(12, 1fr)";
26
+ const resolvedTemplateRows = useResponsiveValue(templateRows);
27
+ const resolvedGap = useResponsiveValue(gap);
28
+ const resolvedRowGap = useResponsiveValue(rowGap);
29
+ const resolvedColumnGap = useResponsiveValue(columnGap);
30
+ const resolvedAutoFlow = useResponsiveValue(autoFlow) ?? "row";
31
+ const resolvedAlign = useResponsiveValue(align);
32
+ const resolvedJustify = useResponsiveValue(justify);
33
+ const resolvedAlignContent = useResponsiveValue(alignContent);
34
+ const gridStyle = {
35
+ ...resolvedTemplateColumns && {
36
+ "--grid-template-columns": resolvedTemplateColumns
37
+ },
38
+ ...resolvedTemplateRows && {
39
+ "--grid-template-rows": resolvedTemplateRows
40
+ },
41
+ ...resolvedAutoFlow && {
42
+ "--grid-auto-flow": resolvedAutoFlow
43
+ },
44
+ ...resolvedAlign && {
45
+ "--grid-align-items": resolvedAlign
46
+ },
47
+ ...resolvedJustify && {
48
+ "--grid-justify-content": resolvedJustify
49
+ },
50
+ ...resolvedAlignContent && {
51
+ "--grid-align-content": resolvedAlignContent
52
+ },
53
+ ...resolvedGap && {
54
+ "--grid-gap": getSpacingValue(resolvedGap)
55
+ },
56
+ ...resolvedRowGap && {
57
+ "--grid-row-gap": getSpacingValue(resolvedRowGap)
58
+ },
59
+ ...resolvedColumnGap && {
60
+ "--grid-column-gap": getSpacingValue(resolvedColumnGap)
61
+ },
62
+ ...height && {
63
+ "--grid-height": height
64
+ },
65
+ ...style
66
+ };
67
+ return /* @__PURE__ */ jsx(
68
+ Element,
69
+ {
70
+ className: classNames("eds-layout-grid", className),
71
+ style: gridStyle,
72
+ ...rest,
73
+ children
74
+ }
75
+ );
76
+ };
77
+ export {
78
+ Grid
79
+ };
80
+ //# sourceMappingURL=Grid.mjs.map
@@ -0,0 +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 = <E extends React.ElementType = typeof defaultElement>({\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>): 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 className={classNames('eds-layout-grid', className)}\n style={gridStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n"],"names":[],"mappings":";;;;;AA6DA,MAAM,iBAAiB;AAEhB,MAAM,OAAO,CAAsD;AAAA,EACxE;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiC;AAC/B,QAAM,UAA6B,MAAM;AAEzC,QAAM,0BACJ,mBAAmB,eAAe,KAAK;AACzC,QAAM,uBAAuB,mBAAmB,YAAY;AAC5D,QAAM,cAAc,mBAAmB,GAAG;AAC1C,QAAM,iBAAiB,mBAAmB,MAAM;AAChD,QAAM,oBAAoB,mBAAmB,SAAS;AACtD,QAAM,mBAAmB,mBAAmB,QAAQ,KAAK;AACzD,QAAM,gBAAgB,mBAAmB,KAAK;AAC9C,QAAM,kBAAkB,mBAAmB,OAAO;AAClD,QAAM,uBAAuB,mBAAmB,YAAY;AAE5D,QAAM,YAAiC;AAAA,IACrC,GAAI,2BAA2B;AAAA,MAC7B,2BAA2B;AAAA,IAAA;AAAA,IAE7B,GAAI,wBAAwB;AAAA,MAC1B,wBAAwB;AAAA,IAAA;AAAA,IAE1B,GAAI,oBAAoB;AAAA,MACtB,oBAAoB;AAAA,IAAA;AAAA,IAEtB,GAAI,iBAAiB;AAAA,MACnB,sBAAsB;AAAA,IAAA;AAAA,IAExB,GAAI,mBAAmB;AAAA,MACrB,0BAA0B;AAAA,IAAA;AAAA,IAE5B,GAAI,wBAAwB;AAAA,MAC1B,wBAAwB;AAAA,IAAA;AAAA,IAE1B,GAAI,eAAe;AAAA,MACjB,cAAc,gBAAgB,WAAW;AAAA,IAAA;AAAA,IAE3C,GAAI,kBAAkB;AAAA,MACpB,kBAAkB,gBAAgB,cAAc;AAAA,IAAA;AAAA,IAElD,GAAI,qBAAqB;AAAA,MACvB,qBAAqB,gBAAgB,iBAAiB;AAAA,IAAA;AAAA,IAExD,GAAI,UAAU;AAAA,MACZ,iBAAiB;AAAA,IAAA;AAAA,IAEnB,GAAG;AAAA,EAAA;AAGL,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,mBAAmB,SAAS;AAAA,MAClD,OAAO;AAAA,MACN,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,49 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useResponsiveValue } from "../LayoutWrapper/useResponsiveValue.mjs";
3
+ import classNames from "classnames";
4
+ /* empty css */
5
+ const defaultElement = "div";
6
+ const formatGridSpan = (value) => {
7
+ if (value === void 0) {
8
+ return void 0;
9
+ }
10
+ if (typeof value === "number") {
11
+ return `span ${value}`;
12
+ }
13
+ return value;
14
+ };
15
+ const GridItem = ({
16
+ colSpan,
17
+ rowSpan = 1,
18
+ as,
19
+ className,
20
+ children,
21
+ style,
22
+ ...rest
23
+ }) => {
24
+ const Element = as || defaultElement;
25
+ const resolvedColSpan = useResponsiveValue(colSpan);
26
+ const resolvedRowSpan = useResponsiveValue(rowSpan);
27
+ const itemStyle = {
28
+ ...resolvedColSpan !== void 0 && {
29
+ "--grid-item-column": formatGridSpan(resolvedColSpan)
30
+ },
31
+ ...resolvedRowSpan !== void 0 && {
32
+ "--grid-item-row": formatGridSpan(resolvedRowSpan)
33
+ },
34
+ ...style
35
+ };
36
+ return /* @__PURE__ */ jsx(
37
+ Element,
38
+ {
39
+ className: classNames("eds-layout-grid-item", className),
40
+ style: itemStyle,
41
+ ...rest,
42
+ children
43
+ }
44
+ );
45
+ };
46
+ export {
47
+ GridItem
48
+ };
49
+ //# sourceMappingURL=GridItem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridItem.mjs","sources":["../../../../src/beta/Grid/GridItem.tsx"],"sourcesContent":["import React from 'react';\nimport { PolymorphicComponentProps } from '@entur/utils';\nimport { useResponsiveValue } from '../LayoutWrapper/useResponsiveValue';\nimport type { ResponsiveValue } from '../LayoutWrapper/utils';\nimport classNames from 'classnames';\n\nimport './GridItem.scss';\n\nexport type GridItemOwnProps = {\n /** Number of columns the item should span (supports responsive objects)\n * If number: adds \"span\" prefix (e.g., 6 → \"span 6\")\n * If string: used directly (e.g., \"span 3\" or \"1 / 3\")\n */\n colSpan?: number | string | ResponsiveValue<number | string>;\n /** Number of rows the item should span (supports responsive objects)\n * @default 1\n * If number: adds \"span\" prefix (e.g., 2 → \"span 2\")\n * If string: used directly (e.g., \"span 2\" or \"1 / 3\")\n */\n rowSpan?: number | string | ResponsiveValue<number | string>;\n /** HTML element or React component used to render the Grid item\n * @default \"div\"\n */\n as?: string | React.ElementType;\n /** Additional class names */\n className?: string;\n /** Content of the Grid item */\n children?: React.ReactNode;\n};\n\nexport type GridItemProps<T extends React.ElementType = typeof defaultElement> =\n PolymorphicComponentProps<T, GridItemOwnProps>;\n\nconst defaultElement = 'div';\n\nconst formatGridSpan = (\n value: number | string | undefined,\n): string | undefined => {\n if (value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return `span ${value}`;\n }\n\n return value;\n};\n\nexport const GridItem = <E extends React.ElementType = typeof defaultElement>({\n colSpan,\n rowSpan = 1,\n as,\n className,\n children,\n style,\n ...rest\n}: GridItemProps<E>): JSX.Element => {\n const Element: React.ElementType = as || defaultElement;\n\n const resolvedColSpan = useResponsiveValue(colSpan);\n const resolvedRowSpan = useResponsiveValue(rowSpan);\n\n const itemStyle: React.CSSProperties = {\n ...(resolvedColSpan !== undefined && {\n '--grid-item-column': formatGridSpan(resolvedColSpan),\n }),\n ...(resolvedRowSpan !== undefined && {\n '--grid-item-row': formatGridSpan(resolvedRowSpan),\n }),\n ...style,\n } as React.CSSProperties;\n\n return (\n <Element\n className={classNames('eds-layout-grid-item', className)}\n style={itemStyle}\n {...rest}\n >\n {children}\n </Element>\n );\n};\n"],"names":[],"mappings":";;;;AAiCA,MAAM,iBAAiB;AAEvB,MAAM,iBAAiB,CACrB,UACuB;AACvB,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,QAAQ,KAAK;AAAA,EACtB;AAEA,SAAO;AACT;AAEO,MAAM,WAAW,CAAsD;AAAA,EAC5E;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqC;AACnC,QAAM,UAA6B,MAAM;AAEzC,QAAM,kBAAkB,mBAAmB,OAAO;AAClD,QAAM,kBAAkB,mBAAmB,OAAO;AAElD,QAAM,YAAiC;AAAA,IACrC,GAAI,oBAAoB,UAAa;AAAA,MACnC,sBAAsB,eAAe,eAAe;AAAA,IAAA;AAAA,IAEtD,GAAI,oBAAoB,UAAa;AAAA,MACnC,mBAAmB,eAAe,eAAe;AAAA,IAAA;AAAA,IAEnD,GAAG;AAAA,EAAA;AAGL,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,wBAAwB,SAAS;AAAA,MACvD,OAAO;AAAA,MACN,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,12 @@
1
+ import { Grid } from "./Grid.mjs";
2
+ import { GridItem } from "./GridItem.mjs";
3
+ const GridComponent = Object.assign(Grid, {
4
+ Item: GridItem
5
+ });
6
+ GridComponent.Item.displayName = "Grid.Item";
7
+ export {
8
+ GridComponent as Grid,
9
+ GridComponent,
10
+ GridItem
11
+ };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/beta/Grid/index.ts"],"sourcesContent":["import { Grid as GridParent } from './Grid';\nimport { GridItem } from './GridItem';\n\ntype Grid = typeof GridParent & {\n /**\n * An item inside a Grid.\n *\n * @example\n * <Grid.Item colSpan={6}>Content</Grid.Item>\n */\n Item: typeof GridItem & { displayName?: string };\n};\n\n/**\n * A CSS Grid component for organizing content in a grid.\n *\n * @example\n * <Grid>\n * <Grid.Item colSpan={6}>Content</Grid.Item>\n * <Grid.Item colSpan={6}>Content</Grid.Item>\n * </Grid>\n */\nexport const GridComponent: Grid = Object.assign(GridParent, {\n Item: GridItem,\n});\n\nGridComponent.Item.displayName = 'Grid.Item';\n\nexport type { GridProps, GridOwnProps } from './Grid';\nexport type { GridSpacingValue, ResponsiveValue } from '../LayoutWrapper/utils';\nexport type { GridItemProps, GridItemOwnProps } from './GridItem';\nexport { GridComponent as Grid, GridItem };\nexport { LayoutWrapper } from '../LayoutWrapper/LayoutWrapper';\nexport { useLayoutValues } from '../LayoutWrapper/useLayoutValues';\n"],"names":["GridParent"],"mappings":";;AAsBO,MAAM,gBAAsB,OAAO,OAAOA,MAAY;AAAA,EAC3D,MAAM;AACR,CAAC;AAED,cAAc,KAAK,cAAc;"}
@@ -0,0 +1,31 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo, createContext, useContext } from "react";
3
+ import { DEFAULT_BREAKPOINTS } from "./utils.mjs";
4
+ const LayoutContext = createContext(null);
5
+ const LayoutWrapper = ({
6
+ breakpoints: customBreakpoints,
7
+ children
8
+ }) => {
9
+ const breakpoints = useMemo(
10
+ () => ({
11
+ ...DEFAULT_BREAKPOINTS,
12
+ ...customBreakpoints
13
+ }),
14
+ [customBreakpoints]
15
+ );
16
+ const layoutValues = useMemo(
17
+ () => ({
18
+ breakpoints
19
+ }),
20
+ [breakpoints]
21
+ );
22
+ return /* @__PURE__ */ jsx(LayoutContext.Provider, { value: layoutValues, children });
23
+ };
24
+ const useLayoutContext = () => {
25
+ return useContext(LayoutContext);
26
+ };
27
+ export {
28
+ LayoutWrapper,
29
+ useLayoutContext
30
+ };
31
+ //# sourceMappingURL=LayoutWrapper.mjs.map
@@ -0,0 +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;"}
@@ -0,0 +1,15 @@
1
+ import { DEFAULT_BREAKPOINTS } from "./utils.mjs";
2
+ import { useLayoutContext } from "./LayoutWrapper.mjs";
3
+ const useLayoutValues = () => {
4
+ const context = useLayoutContext();
5
+ if (context) {
6
+ return context;
7
+ }
8
+ return {
9
+ breakpoints: DEFAULT_BREAKPOINTS
10
+ };
11
+ };
12
+ export {
13
+ useLayoutValues
14
+ };
15
+ //# sourceMappingURL=useLayoutValues.mjs.map
@@ -0,0 +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;"}