@entur/layout 3.6.1 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/beta/cjs/Flex/Flex.cjs +2 -2
  2. package/dist/beta/cjs/Flex/Flex.cjs.map +1 -1
  3. package/dist/beta/cjs/Flex/FlexSpacer.cjs.map +1 -1
  4. package/dist/beta/cjs/Grid/Grid.cjs +2 -2
  5. package/dist/beta/cjs/Grid/Grid.cjs.map +1 -1
  6. package/dist/beta/cjs/Grid/GridItem.cjs +1 -1
  7. package/dist/beta/cjs/Grid/GridItem.cjs.map +1 -1
  8. package/dist/beta/cjs/Grid/index.cjs.map +1 -1
  9. package/dist/beta/cjs/{LayoutWrapper/LayoutWrapper.cjs → LayoutProvider/LayoutProvider.cjs} +3 -3
  10. package/dist/beta/cjs/LayoutProvider/LayoutProvider.cjs.map +1 -0
  11. package/dist/beta/cjs/{LayoutWrapper → LayoutProvider}/useLayoutValues.cjs +2 -2
  12. package/dist/beta/cjs/LayoutProvider/useLayoutValues.cjs.map +1 -0
  13. package/dist/beta/cjs/{LayoutWrapper → LayoutProvider}/useResponsiveValue.cjs +12 -8
  14. package/dist/beta/cjs/LayoutProvider/useResponsiveValue.cjs.map +1 -0
  15. package/dist/beta/cjs/{LayoutWrapper → LayoutProvider}/utils.cjs +3 -3
  16. package/dist/beta/cjs/LayoutProvider/utils.cjs.map +1 -0
  17. package/dist/beta/cjs/index.cjs +3 -3
  18. package/dist/beta/cjs/templates/Sidebar.cjs +64 -48
  19. package/dist/beta/cjs/templates/Sidebar.cjs.map +1 -1
  20. package/dist/beta/cjs/templates/portal/Portal.cjs +44 -35
  21. package/dist/beta/cjs/templates/portal/Portal.cjs.map +1 -1
  22. package/dist/beta/esm/Flex/Flex.mjs +2 -2
  23. package/dist/beta/esm/Flex/Flex.mjs.map +1 -1
  24. package/dist/beta/esm/Flex/FlexSpacer.mjs.map +1 -1
  25. package/dist/beta/esm/Grid/Grid.mjs +2 -2
  26. package/dist/beta/esm/Grid/Grid.mjs.map +1 -1
  27. package/dist/beta/esm/Grid/GridItem.mjs +1 -1
  28. package/dist/beta/esm/Grid/GridItem.mjs.map +1 -1
  29. package/dist/beta/esm/Grid/index.mjs.map +1 -1
  30. package/dist/beta/esm/{LayoutWrapper/LayoutWrapper.mjs → LayoutProvider/LayoutProvider.mjs} +3 -3
  31. package/dist/beta/esm/LayoutProvider/LayoutProvider.mjs.map +1 -0
  32. package/dist/beta/esm/{LayoutWrapper → LayoutProvider}/useLayoutValues.mjs +1 -1
  33. package/dist/beta/esm/LayoutProvider/useLayoutValues.mjs.map +1 -0
  34. package/dist/beta/esm/{LayoutWrapper → LayoutProvider}/useResponsiveValue.mjs +12 -8
  35. package/dist/beta/esm/LayoutProvider/useResponsiveValue.mjs.map +1 -0
  36. package/dist/beta/esm/{LayoutWrapper → LayoutProvider}/utils.mjs +3 -3
  37. package/dist/beta/esm/LayoutProvider/utils.mjs.map +1 -0
  38. package/dist/beta/esm/index.mjs +3 -3
  39. package/dist/beta/esm/templates/Sidebar.mjs +64 -48
  40. package/dist/beta/esm/templates/Sidebar.mjs.map +1 -1
  41. package/dist/beta/esm/templates/portal/Portal.mjs +44 -35
  42. package/dist/beta/esm/templates/portal/Portal.mjs.map +1 -1
  43. package/dist/beta/styles/index.css +22 -1
  44. package/dist/beta/types/Flex/Flex.d.ts +7 -4
  45. package/dist/beta/types/Flex/FlexSpacer.d.ts +4 -1
  46. package/dist/beta/types/Grid/Grid.d.ts +7 -4
  47. package/dist/beta/types/Grid/GridItem.d.ts +7 -4
  48. package/dist/beta/types/Grid/index.d.ts +1 -3
  49. package/dist/beta/types/LayoutProvider/LayoutProvider.d.ts +28 -0
  50. package/dist/beta/types/{LayoutWrapper → LayoutProvider}/index.d.ts +2 -2
  51. package/dist/beta/types/{LayoutWrapper → LayoutProvider}/useLayoutValues.d.ts +1 -1
  52. package/dist/beta/types/{LayoutWrapper → LayoutProvider}/utils.d.ts +15 -4
  53. package/dist/beta/types/index.d.ts +2 -1
  54. package/dist/beta/types/templates/Sidebar.d.ts +19 -18
  55. package/dist/beta/types/templates/portal/Portal.d.ts +21 -9
  56. package/dist/styles.css +15 -9
  57. package/package.json +7 -7
  58. package/dist/beta/cjs/LayoutWrapper/LayoutWrapper.cjs.map +0 -1
  59. package/dist/beta/cjs/LayoutWrapper/useLayoutValues.cjs.map +0 -1
  60. package/dist/beta/cjs/LayoutWrapper/useResponsiveValue.cjs.map +0 -1
  61. package/dist/beta/cjs/LayoutWrapper/utils.cjs.map +0 -1
  62. package/dist/beta/esm/LayoutWrapper/LayoutWrapper.mjs.map +0 -1
  63. package/dist/beta/esm/LayoutWrapper/useLayoutValues.mjs.map +0 -1
  64. package/dist/beta/esm/LayoutWrapper/useResponsiveValue.mjs.map +0 -1
  65. package/dist/beta/esm/LayoutWrapper/utils.mjs.map +0 -1
  66. package/dist/beta/types/LayoutWrapper/LayoutWrapper.d.ts +0 -13
  67. /package/dist/beta/types/{LayoutWrapper → LayoutProvider}/useResponsiveValue.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"useResponsiveValue.mjs","sources":["../../../../src/beta/LayoutWrapper/useResponsiveValue.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useLayoutValues } from './useLayoutValues';\nimport type { ResponsiveValue } from './utils';\n\nconst isResponsiveObject = <T>(\n value: ResponsiveValue<T>,\n): value is { sm?: T; md?: T; lg?: T } => {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n ('sm' in value || 'md' in value || 'lg' in value)\n );\n};\n\nconst getCurrentBreakpoint = (\n breakpoints: { sm: number; md: number; lg: number },\n windowWidth: number,\n): 'sm' | 'md' | 'lg' => {\n if (windowWidth >= breakpoints.lg) {\n return 'lg';\n }\n if (windowWidth >= breakpoints.md) {\n return 'md';\n }\n return 'sm';\n};\n\nexport const useResponsiveValue = <T>(\n value: ResponsiveValue<T> | undefined,\n): T | undefined => {\n const { breakpoints } = useLayoutValues();\n const [currentBreakpoint, setCurrentBreakpoint] = useState<\n 'sm' | 'md' | 'lg'\n >(() => {\n if (typeof window === 'undefined') {\n return 'sm';\n }\n return getCurrentBreakpoint(breakpoints, window.innerWidth);\n });\n\n useEffect(() => {\n if (\n typeof window === 'undefined' ||\n typeof window.matchMedia !== 'function'\n ) {\n return;\n }\n\n const updateBreakpoint = () => {\n setCurrentBreakpoint(\n getCurrentBreakpoint(breakpoints, window.innerWidth),\n );\n };\n\n const mediaQueries = [\n window.matchMedia(`(min-width: ${breakpoints.md}px)`),\n window.matchMedia(`(min-width: ${breakpoints.lg}px)`),\n ];\n\n updateBreakpoint();\n\n const handleChange = () => {\n updateBreakpoint();\n };\n\n mediaQueries.forEach(mq => {\n if (mq.addEventListener) {\n mq.addEventListener('change', handleChange);\n } else {\n mq.addListener(handleChange);\n }\n });\n\n return () => {\n mediaQueries.forEach(mq => {\n if (mq.removeEventListener) {\n mq.removeEventListener('change', handleChange);\n } else {\n mq.removeListener(handleChange);\n }\n });\n };\n }, [breakpoints]);\n\n if (!value) {\n return undefined;\n }\n\n if (!isResponsiveObject(value)) {\n return value;\n }\n\n const responsiveValue = value[currentBreakpoint];\n if (responsiveValue !== undefined) {\n return responsiveValue;\n }\n\n const fallbackOrder: Array<'lg' | 'md' | 'sm'> =\n currentBreakpoint === 'lg'\n ? ['lg', 'md', 'sm']\n : currentBreakpoint === 'md'\n ? ['md', 'sm']\n : ['sm'];\n\n for (const bp of fallbackOrder) {\n if (value[bp] !== undefined) {\n return value[bp];\n }\n }\n\n return undefined;\n};\n"],"names":[],"mappings":";;AAIA,MAAM,qBAAqB,CACzB,UACwC;AACxC,SACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,MACnB,QAAQ,SAAS,QAAQ,SAAS,QAAQ;AAE/C;AAEA,MAAM,uBAAuB,CAC3B,aACA,gBACuB;AACvB,MAAI,eAAe,YAAY,IAAI;AACjC,WAAO;AAAA,EACT;AACA,MAAI,eAAe,YAAY,IAAI;AACjC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,MAAM,qBAAqB,CAChC,UACkB;AAClB,QAAM,EAAE,YAAA,IAAgB,gBAAA;AACxB,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAEhD,MAAM;AACN,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAAA,IACT;AACA,WAAO,qBAAqB,aAAa,OAAO,UAAU;AAAA,EAC5D,CAAC;AAED,YAAU,MAAM;AACd,QACE,OAAO,WAAW,eAClB,OAAO,OAAO,eAAe,YAC7B;AACA;AAAA,IACF;AAEA,UAAM,mBAAmB,MAAM;AAC7B;AAAA,QACE,qBAAqB,aAAa,OAAO,UAAU;AAAA,MAAA;AAAA,IAEvD;AAEA,UAAM,eAAe;AAAA,MACnB,OAAO,WAAW,eAAe,YAAY,EAAE,KAAK;AAAA,MACpD,OAAO,WAAW,eAAe,YAAY,EAAE,KAAK;AAAA,IAAA;AAGtD,qBAAA;AAEA,UAAM,eAAe,MAAM;AACzB,uBAAA;AAAA,IACF;AAEA,iBAAa,QAAQ,CAAA,OAAM;AACzB,UAAI,GAAG,kBAAkB;AACvB,WAAG,iBAAiB,UAAU,YAAY;AAAA,MAC5C,OAAO;AACL,WAAG,YAAY,YAAY;AAAA,MAC7B;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,mBAAa,QAAQ,CAAA,OAAM;AACzB,YAAI,GAAG,qBAAqB;AAC1B,aAAG,oBAAoB,UAAU,YAAY;AAAA,QAC/C,OAAO;AACL,aAAG,eAAe,YAAY;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,mBAAmB,KAAK,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,MAAM,iBAAiB;AAC/C,MAAI,oBAAoB,QAAW;AACjC,WAAO;AAAA,EACT;AAEA,QAAM,gBACJ,sBAAsB,OAClB,CAAC,MAAM,MAAM,IAAI,IACjB,sBAAsB,OACtB,CAAC,MAAM,IAAI,IACX,CAAC,IAAI;AAEX,aAAW,MAAM,eAAe;AAC9B,QAAI,MAAM,EAAE,MAAM,QAAW;AAC3B,aAAO,MAAM,EAAE;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../src/beta/LayoutWrapper/utils.ts"],"sourcesContent":["const VALID_SPACING_VALUES = [\n '2xs',\n 'xs',\n 's',\n 's-m',\n 'm',\n 'm-l',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl',\n '7xl',\n '8xl',\n '9xl',\n '10xl',\n '11xl',\n 'none',\n] as const;\n\nexport type GridSpacingValue = (typeof VALID_SPACING_VALUES)[number];\n\nexport type ResponsiveValue<T> =\n | T\n | {\n sm?: T;\n md?: T;\n lg?: T;\n };\n\nexport type Breakpoints = {\n sm: number;\n md: number;\n lg: number;\n};\n\nexport const DEFAULT_BREAKPOINTS: Breakpoints = {\n sm: 0,\n md: 800,\n lg: 1200,\n};\n\nconst isValidSpacingValue = (value: unknown): value is GridSpacingValue => {\n return (\n typeof value === 'string' &&\n VALID_SPACING_VALUES.includes(value as GridSpacingValue)\n );\n};\n\nexport const getSpacingValue = (\n spacing: GridSpacingValue | undefined,\n componentName = 'Grid',\n): string | undefined => {\n if (!spacing) return undefined;\n if (spacing === 'none') return '0';\n\n if (!isValidSpacingValue(spacing)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Invalid ${componentName} spacing value: \"${spacing}\". Valid values are: ${VALID_SPACING_VALUES.join(\n ', ',\n )}. Falling back to undefined.`,\n );\n }\n return undefined;\n }\n\n return `var(--${spacing})`;\n};\n"],"names":[],"mappings":"AAAA,MAAM,uBAAuB;AAAA,EAC3B;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;AACF;AAkBO,MAAM,sBAAmC;AAAA,EAC9C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,MAAM,sBAAsB,CAAC,UAA8C;AACzE,SACE,OAAO,UAAU,YACjB,qBAAqB,SAAS,KAAyB;AAE3D;AAEO,MAAM,kBAAkB,CAC7B,SACA,gBAAgB,WACO;AACvB,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,YAAY,OAAQ,QAAO;AAE/B,MAAI,CAAC,oBAAoB,OAAO,GAAG;AACjC,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAQ;AAAA,QACN,WAAW,aAAa,oBAAoB,OAAO,wBAAwB,qBAAqB;AAAA,UAC9F;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,IAEL;AACA,WAAO;AAAA,EACT;AAEA,SAAO,SAAS,OAAO;AACzB;"}
@@ -1,13 +0,0 @@
1
- import { default as React } from 'react';
2
- import { Breakpoints } from './utils';
3
- export type LayoutValues = {
4
- breakpoints: Breakpoints;
5
- };
6
- export type LayoutWrapperProps = {
7
- /** Custom breakpoint values to override defaults */
8
- breakpoints?: Partial<Breakpoints>;
9
- /** Children components that can use layout values */
10
- children: React.ReactNode;
11
- };
12
- export declare const LayoutWrapper: ({ breakpoints: customBreakpoints, children, }: LayoutWrapperProps) => JSX.Element;
13
- export declare const useLayoutContext: () => LayoutValues | null;