@shopgate/engage 7.27.5-alpha.2 → 7.27.5

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 (140) hide show
  1. package/category/components/CategoryImage/index.js +1 -1
  2. package/category/components/CategoryList/index.js +3 -7
  3. package/category/components/CategoryList/style.js +1 -1
  4. package/category/streams/index.js +1 -1
  5. package/components/ResponsiveContainer/breakpoints.js +2 -2
  6. package/components/SheetList/components/Item/index.js +7 -7
  7. package/components/View/components/Content/style.js +1 -1
  8. package/components/View/context.js +1 -1
  9. package/components/index.js +1 -1
  10. package/core/constants/index.js +1 -7
  11. package/core/contexts/ThemeResourcesContext.d.ts +1 -10
  12. package/core/contexts/ThemeResourcesContext.js +1 -1
  13. package/core/helpers/scrollContainer.js +2 -2
  14. package/core/hocs/withThemeResources.js +1 -4
  15. package/core/hooks/events/index.js +1 -1
  16. package/core/hooks/useThemeResources.js +5 -6
  17. package/core/providers/ThemeResourcesProvider.js +5 -9
  18. package/locations/action-creators/index.js +1 -1
  19. package/locations/action-creators/selectLocation.js +8 -5
  20. package/locations/action-creators/sendDefaultLocationCode.js +14 -0
  21. package/locations/actions/fetchDefaultLocation.js +1 -1
  22. package/locations/actions/sendDefaultLocationCode.js +2 -2
  23. package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +2 -2
  24. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.js +3 -1
  25. package/locations/constants/ActionTypes.js +2 -1
  26. package/locations/constants/index.js +1 -1
  27. package/locations/index.js +1 -1
  28. package/locations/locations.streams.js +3 -1
  29. package/locations/providers/FulfillmentProvider.js +6 -5
  30. package/locations/providers/StoreDetailsProvider.js +4 -2
  31. package/locations/providers/StoreFinderProvider.js +5 -3
  32. package/locations/subscriptions.js +12 -13
  33. package/package.json +7 -9
  34. package/page/components/index.js +1 -1
  35. package/page/constants/index.js +1 -5
  36. package/page/index.js +2 -1
  37. package/page/selectors/index.js +2 -48
  38. package/product/components/ProductCard/index.js +1 -1
  39. package/product/components/ProductGridPrice/index.js +1 -1
  40. package/product/components/ProductSlider/index.js +4 -4
  41. package/product/components/index.js +1 -1
  42. package/styles/helpers/index.js +1 -1
  43. package/styles/helpers/setPageBackgroundColor.js +2 -2
  44. package/styles/index.js +1 -1
  45. package/tracking/selectors/cookieConsent.js +2 -2
  46. package/components/Typography/Typography.d.ts +0 -132
  47. package/components/Typography/Typography.js +0 -11
  48. package/components/Typography/index.js +0 -1
  49. package/core/hooks/events/usePressHandler.js +0 -38
  50. package/page/action-creators/index.js +0 -22
  51. package/page/components/Widgets/Overlay.js +0 -51
  52. package/page/components/Widgets/Tooltip.js +0 -22
  53. package/page/components/Widgets/Widget.js +0 -15
  54. package/page/components/Widgets/WidgetContext.d.ts +0 -42
  55. package/page/components/Widgets/WidgetContext.js +0 -9
  56. package/page/components/Widgets/WidgetProvider.js +0 -8
  57. package/page/components/Widgets/Widgets.js +0 -11
  58. package/page/components/Widgets/WidgetsPreviewContext.js +0 -9
  59. package/page/components/Widgets/WidgetsPreviewProvider.js +0 -8
  60. package/page/components/Widgets/constants.js +0 -4
  61. package/page/components/Widgets/events.js +0 -23
  62. package/page/components/Widgets/helpers.js +0 -23
  63. package/page/components/Widgets/hooks.js +0 -69
  64. package/page/components/Widgets/index.js +0 -1
  65. package/page/components/Widgets/types.d.ts +0 -127
  66. package/page/constants/actionTypes.js +0 -1
  67. package/page/hooks/index.d.ts +0 -60
  68. package/page/hooks/index.js +0 -25
  69. package/page/reducers/index.js +0 -6
  70. package/page/subscriptions/index.js +0 -4
  71. package/page/widgets/CategoryList/CategoryList.js +0 -4
  72. package/page/widgets/CategoryList/hooks.js +0 -14
  73. package/page/widgets/CategoryList/index.js +0 -1
  74. package/page/widgets/CategoryList/selectors.js +0 -8
  75. package/page/widgets/HTML/HTML.js +0 -5
  76. package/page/widgets/HTML/hooks.js +0 -12
  77. package/page/widgets/HTML/index.js +0 -1
  78. package/page/widgets/Headline/Headline.js +0 -5
  79. package/page/widgets/Headline/hooks.js +0 -8
  80. package/page/widgets/Headline/index.js +0 -1
  81. package/page/widgets/Placeholder/Placeholder.js +0 -5
  82. package/page/widgets/Placeholder/hooks.js +0 -12
  83. package/page/widgets/Placeholder/index.js +0 -1
  84. package/page/widgets/ProductList/ProductList.js +0 -5
  85. package/page/widgets/ProductList/hooks.js +0 -25
  86. package/page/widgets/ProductList/index.js +0 -1
  87. package/page/widgets/ProductSlider/ProductSlider.js +0 -5
  88. package/page/widgets/ProductSlider/hooks.js +0 -28
  89. package/page/widgets/ProductSlider/index.js +0 -1
  90. package/page/widgets/index.js +0 -1
  91. package/page/widgets/widgets.json +0 -20
  92. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +0 -8
  93. package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -1
  94. package/product/components/ProductGrid/components/Item/components/ItemDiscount/index.js +0 -5
  95. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +0 -5
  96. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -1
  97. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +0 -5
  98. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -1
  99. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +0 -5
  100. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -1
  101. package/product/components/ProductGrid/components/Item/components/ItemPrice/index.js +0 -5
  102. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -1
  103. package/product/components/ProductGrid/components/Item/index.js +0 -7
  104. package/product/components/ProductGrid/components/Iterator/index.js +0 -5
  105. package/product/components/ProductGrid/components/Layout/index.js +0 -5
  106. package/product/components/ProductGrid/index.js +0 -22
  107. package/product/components/ProductGrid/spec.js +0 -1
  108. package/styles/helpers/color.js +0 -23
  109. package/styles/index.d.ts +0 -17
  110. package/styles/theme/createTheme/createBreakpoints.d.ts +0 -114
  111. package/styles/theme/createTheme/createBreakpoints.js +0 -41
  112. package/styles/theme/createTheme/createPalette.d.ts +0 -36
  113. package/styles/theme/createTheme/createPalette.js +0 -4
  114. package/styles/theme/createTheme/createSpacing.d.ts +0 -23
  115. package/styles/theme/createTheme/createSpacing.js +0 -14
  116. package/styles/theme/createTheme/createTypography.d.ts +0 -55
  117. package/styles/theme/createTheme/createTypography.js +0 -23
  118. package/styles/theme/createTheme/index.d.ts +0 -41
  119. package/styles/theme/createTheme/index.js +0 -5
  120. package/styles/theme/createTheme/transitions.d.ts +0 -100
  121. package/styles/theme/createTheme/transitions.js +0 -26
  122. package/styles/theme/createTheme/zIndex.d.ts +0 -12
  123. package/styles/theme/createTheme/zIndex.js +0 -3
  124. package/styles/theme/hooks/index.d.ts +0 -4
  125. package/styles/theme/hooks/index.js +0 -1
  126. package/styles/theme/hooks/useActiveBreakpoint.d.ts +0 -18
  127. package/styles/theme/hooks/useActiveBreakpoint.js +0 -4
  128. package/styles/theme/hooks/useMediaQuery.d.ts +0 -33
  129. package/styles/theme/hooks/useMediaQuery.js +0 -20
  130. package/styles/theme/hooks/useResponsiveValue.d.ts +0 -27
  131. package/styles/theme/hooks/useResponsiveValue.js +0 -4
  132. package/styles/theme/hooks/useTheme.d.ts +0 -8
  133. package/styles/theme/hooks/useTheme.js +0 -4
  134. package/styles/theme/index.d.ts +0 -8
  135. package/styles/theme/index.js +0 -1
  136. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +0 -21
  137. package/styles/theme/providers/ActiveBreakpointProvider.js +0 -13
  138. package/styles/theme/providers/ThemeProvider.d.ts +0 -18
  139. package/styles/theme/providers/ThemeProvider.js +0 -7
  140. package/styles/tss/index.js +0 -3
@@ -1,36 +0,0 @@
1
- type ColorPartialKeys =
2
- | 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
3
- | 'A100' | 'A200' | 'A400' | 'A700';
4
-
5
- type ColorPartial = Record<ColorPartialKeys, string>;
6
-
7
-
8
- interface TypeText {
9
- primary: string;
10
- secondary: string;
11
- tertiary: string;
12
- }
13
-
14
- interface BasePaletteColor {
15
- main: string;
16
- }
17
-
18
- interface PaletteColorWithContrast extends PaletteColor {
19
- contrast: string;
20
- }
21
-
22
- type PaletteColor<WithContrast extends boolean = false> =
23
- BasePaletteColor & (WithContrast extends true ? { contrast: string } : {});
24
-
25
- export interface Palette {
26
- primary: PaletteColor<true>;
27
- secondary: PaletteColor<true>;
28
- error: PaletteColor;
29
- warning: PaletteColor;
30
- success: PaletteColor;
31
- cta: PaletteColor<true>;
32
- text: TypeText;
33
- grey: ColorPartial;
34
- }
35
-
36
- export default function createPalette(): Palette;
@@ -1,4 +0,0 @@
1
- function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}var grey={50:'#fafafa',100:'#f5f5f5',200:'#eeeeee',300:'#e0e0e0',400:'#bdbdbd',500:'#9e9e9e',600:'#757575',700:'#616161',800:'#424242',900:'#212121',A100:'#f5f5f5',A200:'#eeeeee',A400:'#bdbdbd',A700:'#616161'};/**
2
- * Creates a palette object for the theme.
3
- * @returns {Object} The palette object.
4
- */var createPalette=function createPalette(){var palette={primary:{main:'var(--color-primary)',contrast:'var(--color-primary-contrast)'},secondary:{main:'var(--color-secondary)',contrast:'var(--color-secondary-contrast)'},error:{main:'var(--color-state-alert)'},warning:{main:'var(--color-state-warning)'},success:{main:'var(--color-state-ok)'},cta:{main:'var(--color-button-cta)',contrast:'var(--color-button-cta-contrast)'},text:{primary:'var(--color-text-high-emphasis)',secondary:'var(--color-text-medium-emphasis)',tertiary:'var(--color-text-low-emphasis)'}};return _extends({},palette,{grey:grey});};export default createPalette;
@@ -1,23 +0,0 @@
1
- /* tslint:disable:unified-signatures */
2
-
3
- export type SpacingArgument = number | string;
4
-
5
- export interface Spacing {
6
- /**
7
- * The spacing helper can be used to create consistent spacing between UI element.
8
- *
9
- * It accepts 0 to 4 spacing arguments, which can be numbers or strings like `auto`,
10
- */
11
- (): number;
12
- (value: number): number;
13
- (topBottom: SpacingArgument, rightLeft: SpacingArgument): string;
14
- (top: SpacingArgument, rightLeft: SpacingArgument, bottom: SpacingArgument): string;
15
- (
16
- top: SpacingArgument,
17
- right: SpacingArgument,
18
- bottom: SpacingArgument,
19
- left: SpacingArgument
20
- ): string;
21
- }
22
-
23
- export default function createSpacing(): Spacing;
@@ -1,14 +0,0 @@
1
- import{isDev}from'@shopgate/engage/core/helpers';var spacingUnit=8;/**
2
- * Create the spacing function of the theme
3
- * @returns {function(...(number | string)): string} A function that takes one or more spacing
4
- * arguments
5
- */var createSpacing=function createSpacing(){/**
6
- *
7
- * @param {number|string} input The input
8
- * @returns {string|number} The result
9
- */var transform=function transform(input){if(typeof input==='number'){return input*spacingUnit;}return input;};/**
10
- * @param {...(number | string)} args - 0 to 4 spacing arguments, which can be numbers
11
- * or strings like 'auto',
12
- * @returns {string} A space-separated string of pixel values or other transformed values
13
- */var spacing=function spacing(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}if(isDev){if(!(args.length<=4)){// eslint-disable-next-line no-console
14
- console.error("Too many arguments passed. Expected between 0 and 4 arguments, got ".concat(args.length,"."));}}if(args.length===0){return transform(1);}if(args.length===1){return transform(args[0]);}return args.slice(0,4).map(function(argument){var output=transform(argument);return typeof output==='number'?"".concat(output,"px"):output;}).join(' ');};return spacing;};export default createSpacing;
@@ -1,55 +0,0 @@
1
- import * as React from 'react';
2
- import { type CSSObject } from 'tss-react';
3
- import { type Palette } from './createPalette';
4
-
5
-
6
- export type Variant =
7
- | 'h1'
8
- | 'h2'
9
- | 'h3'
10
- | 'h4'
11
- | 'h5'
12
- | 'h6'
13
- | 'subtitle1'
14
- | 'subtitle2'
15
- | 'body1'
16
- | 'body2'
17
- | 'caption'
18
- | 'button'
19
- | 'overline';
20
-
21
- export interface FontStyle
22
- extends Required<{
23
- fontFamily: React.CSSProperties['fontFamily'];
24
- fontSize: number;
25
- fontWeightLight: React.CSSProperties['fontWeight'];
26
- fontWeightRegular: React.CSSProperties['fontWeight'];
27
- fontWeightMedium: React.CSSProperties['fontWeight'];
28
- fontWeightBold: React.CSSProperties['fontWeight'];
29
- }> {}
30
-
31
- export interface FontStyleOptions extends Partial<FontStyle> {
32
- allVariants?: React.CSSProperties;
33
- }
34
-
35
- export type TypographyStyle = CSSObject;
36
- export interface TypographyStyleOptions extends TypographyStyle {}
37
-
38
- export interface TypographyUtils {
39
- /**
40
- * Calculates a rem value for a passed pixel value.
41
- * @param size The source value in pixels.
42
- * @returns The result value in rem.
43
- */
44
- pxToRem: (px: number) => string;
45
- }
46
-
47
- export interface Typography extends Record<Variant, TypographyStyle>, FontStyle, TypographyUtils {}
48
-
49
- export interface TypographyOptions
50
- extends Partial<Record<Variant, TypographyStyleOptions> & FontStyleOptions> {}
51
-
52
- export default function createTypography(
53
- palette: Palette,
54
- typography: TypographyOptions | ((palette: Palette) => TypographyOptions)
55
- ): Typography;
@@ -1,23 +0,0 @@
1
- import _merge from"lodash/merge";var _excluded=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","allVariants","pxToRem"];function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import{isDev}from'@shopgate/engage/core/helpers';/**
2
- * Round a number to a fixed precision of five decimal places.
3
- * @param {number} value The value to round.
4
- * @returns {number} The rounded value.
5
- */function round(value){return Math.round(value*1e5)/1e5;}var caseAllCaps={textTransform:'uppercase'};var defaultFontFamily='"Roboto", "Helvetica", "Arial", sans-serif';/**
6
- * Creates the typography object for the theme.
7
- * @param {Object} palette The theme palette.
8
- * @param {Object|Function} typography The typography options or a function that returns them.
9
- * @returns {Object} The typography object.
10
- * @see @link{https://material.io/design/typography/the-type-system.html}
11
- * @see @link{https://material.io/design/typography/understanding-typography.html}
12
- */export default function createTypography(palette,typography){var _ref=typeof typography==='function'?typography(palette):typography,_ref$fontFamily=_ref.fontFamily,fontFamily=_ref$fontFamily===void 0?defaultFontFamily:_ref$fontFamily,_ref$fontSize=_ref.fontSize,fontSize=_ref$fontSize===void 0?16:_ref$fontSize,_ref$fontWeightLight=_ref.fontWeightLight,fontWeightLight=_ref$fontWeightLight===void 0?300:_ref$fontWeightLight,_ref$fontWeightRegula=_ref.fontWeightRegular,fontWeightRegular=_ref$fontWeightRegula===void 0?400:_ref$fontWeightRegula,_ref$fontWeightMedium=_ref.fontWeightMedium,fontWeightMedium=_ref$fontWeightMedium===void 0?500:_ref$fontWeightMedium,_ref$fontWeightBold=_ref.fontWeightBold,fontWeightBold=_ref$fontWeightBold===void 0?700:_ref$fontWeightBold,allVariants=_ref.allVariants,pxToRem2=_ref.pxToRem,other=_objectWithoutProperties(_ref,_excluded);if(isDev){if(typeof fontSize!=='number'){console.error('Shopgate Theme: `fontSize` is required to be a number.');}}/**
13
- * Calculates a rem value for a passed pixel value.
14
- * @param {number} size The source value in pixels.
15
- * @returns {string} The result value in rem.
16
- */var pxToRem=function pxToRem(size){return"".concat(round(size/fontSize),"rem");};/**
17
- * Creates a typography variant object.
18
- * @param {number} fontWeight The font weight to use for the variant.
19
- * @param {number} size Font size in pixels.
20
- * @param {number} lineHeight Line height as a unitless number.
21
- * @param {Object} casing Casing styles to apply, e.g. textTransform.
22
- * @returns {Object} The typography variant object.
23
- */var buildVariant=function buildVariant(fontWeight,size,lineHeight,casing){return _extends({fontFamily:fontFamily,fontWeight:fontWeight,fontSize:pxToRem(size),lineHeight:lineHeight},casing,{},allVariants);};var variants={h1:buildVariant(fontWeightBold,34,1.15),h2:buildVariant(fontWeightBold,22,1.3),h3:buildVariant(fontWeightMedium,20,1.35),h4:buildVariant(fontWeightMedium,18,1.4),h5:buildVariant(fontWeightMedium,16,1.5),h6:buildVariant(fontWeightMedium,14,1.5),subtitle1:buildVariant(fontWeightRegular,16,1.75),subtitle2:buildVariant(fontWeightMedium,14,1.57),body1:buildVariant(fontWeightRegular,16,1.5),body2:buildVariant(fontWeightRegular,14,1.43),button:buildVariant(fontWeightMedium,14,1.75,caseAllCaps),caption:buildVariant(fontWeightRegular,12,1.66),overline:buildVariant(fontWeightRegular,12,2.66,caseAllCaps)};return _merge(_extends({pxToRem:pxToRem,fontFamily:fontFamily,fontSize:fontSize,fontWeightLight:fontWeightLight,fontWeightRegular:fontWeightRegular,fontWeightMedium:fontWeightMedium,fontWeightBold:fontWeightBold},variants),other);}
@@ -1,41 +0,0 @@
1
- import { type Palette } from './createPalette'
2
- import { type Typography, type TypographyOptions } from './createTypography';
3
- import { type Breakpoints } from './createBreakpoints';
4
- import { type Spacing } from './createSpacing';
5
- import { type Transitions } from './transitions';
6
- import { type ZIndex } from './zIndex';
7
-
8
- export { type Breakpoint } from './createBreakpoints'
9
-
10
- export interface ThemeOptions {
11
- typography?: TypographyOptions | ((palette: Palette) => TypographyOptions);
12
- }
13
-
14
- export interface Theme {
15
- /**
16
- * The palette defines the theme colors.
17
- */
18
- palette: Palette;
19
- /**
20
- * API to simplify the use of media queries.
21
- */
22
- breakpoints: Breakpoints;
23
- /**
24
- * Use the spacing function to create consistent spacing.
25
- */
26
- spacing: Spacing;
27
- /**
28
- * API to simplify the creation of transitions
29
- */
30
- transitions: Transitions;
31
- /**
32
- * Font styles for multiple typography variants.
33
- */
34
- typography: Typography;
35
- /**
36
- * Reference to z-index values for multiple components.
37
- */
38
- zIndex: ZIndex;
39
- }
40
-
41
- export function createTheme(options?: ThemeOptions): Theme;
@@ -1,5 +0,0 @@
1
- import createPalette from"./createPalette";import createBreakpoints from"./createBreakpoints";import createTypography from"./createTypography";import createSpacing from"./createSpacing";import transitions from"./transitions";import zIndex from"./zIndex";// eslint-disable-next-line valid-jsdoc
2
- /**
3
- * Creates a theme object for the ThemeProvider.
4
- * @returns The theme object
5
- */export var createTheme=function createTheme(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _options$typography=options.typography,typographyInput=_options$typography===void 0?{}:_options$typography;var palette=createPalette();var breakpoints=createBreakpoints();var spacing=createSpacing();var typography=createTypography(palette,typographyInput);return{palette:palette,typography:typography,breakpoints:breakpoints,spacing:spacing,transitions:transitions,zIndex:zIndex};};
@@ -1,100 +0,0 @@
1
- export interface Easing {
2
- /**
3
- * This is the most common easing curve.
4
- */
5
- easeInOut: string;
6
- /**
7
- * Objects enter the screen at full velocity from off-screen and slowly decelerate to a resting
8
- * point.
9
- */
10
- easeOut: string;
11
- /**
12
- * Objects leave the screen at full velocity. They do not decelerate when off-screen.
13
- */
14
- easeIn: string;
15
- /**
16
- * The sharp curve is used by objects that may return to the screen at any time.
17
- */
18
- sharp: string;
19
- }
20
- export const easing: Easing;
21
-
22
- export interface Duration {
23
- shortest: number;
24
- shorter: number;
25
- short: number;
26
- /**
27
- * Most basic recommended timing
28
- */
29
- standard: number;
30
- /**
31
- * This is to be used in complex animations
32
- */
33
- complex: number;
34
- /**
35
- * Recommended when something is entering screen
36
- */
37
- enteringScreen: number;
38
- /**
39
- * Recommended when something is leaving screen
40
- */
41
- leavingScreen: number;
42
- }
43
-
44
- export const duration: Duration;
45
-
46
- export function formatMs(milliseconds: number): string;
47
-
48
- export interface Transitions {
49
- /**
50
- * Easing functions for transitions.
51
- */
52
- easing: Easing;
53
- /**
54
- * Presets for transition durations.
55
- */
56
- duration: Duration;
57
- /**
58
- * Creates a CSS transition string based on the provided properties and options.
59
- */
60
- create(
61
- /**
62
- * The CSS properties to apply the transition to.
63
- * Can be a single property or an array of properties.
64
- */
65
- props: string | string[],
66
- options?: Partial<{
67
- /**
68
- * Duration of the transition as a number in milliseconds or a string with a
69
- * CSS time unit (e.g., '500ms', '0.5s').
70
- */
71
- duration: number | string;
72
- /**
73
- * Easing function to use for the transition.
74
- */
75
- easing: string;
76
- /**
77
- * Delay before the transition starts, as a number in milliseconds or a string with a
78
- * CSS time unit (e.g., '500ms', '0.5s').
79
- */
80
- delay: number | string
81
- }>
82
- ): string;
83
- /**
84
- * Calculates an appropriate animation duration (in milliseconds) for a height-based
85
- * transition effect. The duration increases with height but in a sub-linear fashion,
86
- * providing a smooth and visually pleasing animation speed for expanding/collapsing UI elements.
87
- *
88
- * @param {number} height - The height (in pixels) of the element being animated.
89
- * @returns {number} The calculated duration in milliseconds. Returns 0 if height is 0 or falsy.
90
- *
91
- * @example
92
- * getAutoHeightDuration(72); // returns ~222
93
- */
94
- getAutoHeightDuration(height: number): number;
95
- }
96
-
97
- // export type TransitionsOptions = DeepPartial<Transitions>;
98
-
99
- declare const transitions: Transitions;
100
- export default transitions;
@@ -1,26 +0,0 @@
1
- var _excluded=["duration","easing","delay"];function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import{isDev}from'@shopgate/engage/core/helpers';// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves
2
- // to learn the context in which each easing should be used.
3
- export var easing={// This is the most common easing curve.
4
- easeInOut:'cubic-bezier(0.4, 0, 0.2, 1)',// Objects enter the screen at full velocity from off-screen and
5
- // slowly decelerate to a resting point.
6
- easeOut:'cubic-bezier(0.0, 0, 0.2, 1)',// Objects leave the screen at full velocity. They do not decelerate when off-screen.
7
- easeIn:'cubic-bezier(0.4, 0, 1, 1)',// The sharp curve is used by objects that may return to the screen at any time.
8
- sharp:'cubic-bezier(0.4, 0, 0.6, 1)'};// Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations
9
- // to learn when use what timing
10
- export var duration={shortest:150,shorter:200,"short":250,// most basic recommended timing
11
- standard:300,// this is to be used in complex animations
12
- complex:375,// recommended when something is entering screen
13
- enteringScreen:225,// recommended when something is leaving screen
14
- leavingScreen:195};/**
15
- * Converts milliseconds to a string representation.
16
- * @param {number} milliseconds Input in milliseconds.
17
- * @returns {string}
18
- */function formatMs(milliseconds){return"".concat(Math.round(milliseconds),"ms");}/**
19
- * @param {string|Array} props
20
- * @param {object} param
21
- * @param {string} param.prop
22
- * @param {number} param.duration
23
- * @param {string} param.easing
24
- * @param {number} param.delay
25
- */export default{easing:easing,duration:duration,create:function create(){var props=arguments.length>0&&arguments[0]!==undefined?arguments[0]:['all'];var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _options$duration=options.duration,durationOption=_options$duration===void 0?duration.standard:_options$duration,_options$easing=options.easing,easingOption=_options$easing===void 0?easing.easeInOut:_options$easing,_options$delay=options.delay,delay=_options$delay===void 0?0:_options$delay,other=_objectWithoutProperties(options,_excluded);if(isDev){/* eslint-disable require-jsdoc */var isString=function isString(value){return typeof value==='string';};var isNumber=function isNumber(value){return!Number.isNaN(parseFloat(value));};/* eslint-enable require-jsdoc */if(!isString(props)&&!Array.isArray(props)){console.error('Shopgate Theme: Argument "props" must be a string or Array.');}if(!isNumber(durationOption)&&!isString(durationOption)){console.error("Shopgate Theme: Argument \"duration\" must be a number or a string but found ".concat(durationOption,"."));}if(!isString(easingOption)){console.error('Shopgate Theme: Argument "easing" must be a string.');}if(!isNumber(delay)&&!isString(delay)){console.error('Shopgate Theme: Argument "delay" must be a number or a string.');}if(Object.keys(other).length!==0){console.error("Shopgate Theme: Unrecognized argument(s) [".concat(Object.keys(other).join(','),"]."));}}return(Array.isArray(props)?props:[props]).map(function(animatedProp){return"".concat(animatedProp," ").concat(typeof durationOption==='string'?durationOption:formatMs(durationOption)," ").concat(easingOption," ").concat(typeof delay==='string'?delay:formatMs(delay));}).join(',');},getAutoHeightDuration:function getAutoHeightDuration(height){if(!height){return 0;}var constant=height/36;// https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10
26
- return Math.round((4+15*Math.pow(constant,0.25)+constant/5)*10);}};
@@ -1,12 +0,0 @@
1
- export interface ZIndex {
2
- tabBar: number;
3
- drawer: number;
4
- snackbar: number;
5
- modal: number;
6
- }
7
-
8
- export type ZIndexOptions = Partial<ZIndex>;
9
-
10
- declare const zIndex: ZIndex;
11
-
12
- export default zIndex;
@@ -1,3 +0,0 @@
1
- // We need to centralize the zIndex definitions as they work
2
- // like global values in the browser.
3
- var zIndex={tabBar:10,drawer:1200,snackbar:1400,modal:2000};export default zIndex;
@@ -1,4 +0,0 @@
1
- export { default as useActiveBreakpoint } from './useActiveBreakpoint';
2
- export { default as useMediaQuery } from './useMediaQuery';
3
- export { default as useResponsiveValue } from './useResponsiveValue';
4
- export { default as useTheme } from './useTheme';
@@ -1 +0,0 @@
1
- export{default as useActiveBreakpoint}from"./useActiveBreakpoint";export{default as useMediaQuery}from"./useMediaQuery";export{default as useResponsiveValue}from"./useResponsiveValue";export{default as useTheme}from"./useTheme";
@@ -1,18 +0,0 @@
1
- import { Breakpoint } from '..';
2
-
3
- /**
4
- * Returns the active breakpoint for the current window size.
5
- *
6
- * @example
7
- * ```js
8
- * import React from 'react';
9
- * import { useActiveBreakpoint } from '@shopgate/engage/styles';
10
- *
11
- * export default function MyComponent() {
12
- * const activeBreakpoint = useActiveBreakpoint();
13
- *
14
- * return (<span>{`active breakpoint: ${activeBreakpoint}`}</span>)
15
- * }
16
- * ```
17
- */
18
- export default function useActiveBreakpoint(): Breakpoint;
@@ -1,4 +0,0 @@
1
- import{useContext}from'react';import{ActiveBreakpointContext}from"../providers/ActiveBreakpointProvider";// eslint-disable-next-line valid-jsdoc
2
- /**
3
- * Returns the active breakpoint for the current window size.
4
- */var useActiveBreakpoint=function useActiveBreakpoint(){return useContext(ActiveBreakpointContext);};export default useActiveBreakpoint;
@@ -1,33 +0,0 @@
1
- import { Theme } from '..';
2
-
3
- /**
4
- * Creates a media query hook that can be used to check if a media query matches the current
5
- * viewport.
6
- * @param {string|ThemeFn} queryInput The media query string or a function that receives the theme
7
- * and returns a media query string.
8
- * @returns {boolean} Returns true if the media query matches, false otherwise.
9
- *
10
- * @example Use the useTheme hook to get access to the breakpoint helper functions:
11
- * ```js
12
- * import React from 'react';
13
- * import { useTheme, useMediaQuery } from '@shopgate/engage/styles';
14
- *
15
- * export default function MyComponent() {
16
- * const theme = useTheme();
17
- * const matches = useMediaQuery(theme.breakpoints.up('sm'));
18
- *
19
- * return (<span>{`theme.breakpoints.up('sm') matches: ${matches}`}</span>)
20
- * }
21
- *```
22
- * @example Alternatively, you can use a callback function, accepting the theme as a first argument:
23
- * ```js
24
- * import React from 'react';
25
- * import { useMediaQuery } from '@shopgate/engage/styles';
26
- *
27
- * export default function MyComponent() {
28
- * const matches = useMediaQuery((theme) => theme.breakpoints.up('sm'));
29
- *
30
- * return (<span>{`theme.breakpoints.up('sm') matches: ${matches}`}</span>)
31
- * }
32
- */
33
- export default function useMediaQuery(queryInput: string | ((theme: Theme) => string)): boolean;
@@ -1,20 +0,0 @@
1
- function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{useState,useEffect}from'react';import useTheme from"./useTheme";/**
2
- * React hook to check if a media query matches the current viewport.
3
- * Doesn't accept media query strings that start with '@media'.
4
- * @param {string} query A media query string, e.g. '(min-width: 600px)'
5
- * @returns {boolean} Returns true if the media query matches, false otherwise.
6
- */var useMediaQueryInternal=function useMediaQueryInternal(query){var _useState=useState(function(){return window.matchMedia(query).matches;}),_useState2=_slicedToArray(_useState,2),match=_useState2[0],setMatch=_useState2[1];useEffect(function(){var queryList=window.matchMedia(query);/**
7
- * Update the match state when the media query changes.
8
- */var updateMatch=function updateMatch(){setMatch(queryList.matches);};queryList.addEventListener('change',updateMatch);return function(){queryList.removeEventListener('change',updateMatch);};},[query]);return match;};/**
9
- * @typedef {import('./useTheme').Theme} Theme
10
- */ /**
11
- * @callback ThemeFn
12
- * @param {Theme} theme The current theme object.
13
- */ /**
14
- * Creates a media query hook that can be used to check if a media query matches the current
15
- * viewport.
16
- * @param {string|ThemeFn} queryInput The media query string or a function that receives the theme
17
- * and returns a media query string.
18
- * @returns {boolean} Returns true if the media query matches, false otherwise.
19
- */var useMediaQuery=function useMediaQuery(queryInput){var theme=useTheme();var query=typeof queryInput==='function'?queryInput(theme):queryInput;// Remove the '@media' prefix if it exists, as useMediaQueryInternal expects a plain media query.
20
- query=query.replace(/^@media( ?)/m,'');var match=useMediaQueryInternal(query);return match;};export default useMediaQuery;
@@ -1,27 +0,0 @@
1
- import { Breakpoint } from '..';
2
-
3
- type BreakpointValueMap<T> = Partial<Record<Breakpoint, T>>;
4
-
5
- /**
6
- * Returns the value for the current breakpoint based on the provided responsive values object.
7
- * It is also responsive to window resizing and returning the appropriate value according to the
8
- * new window size.
9
- * @param values The responsive values object
10
- * @example
11
- * ```js
12
- * import React from 'react';
13
- * import { useResponsiveValue } from '@shopgate/engage/styles';
14
- *
15
- * export default function MyComponent() {
16
- * const flexDir = useResponsiveValue({
17
- * xs: "column",
18
- * lg: "row"
19
- * });
20
- *
21
- * return (<span style={{ display: 'flex', flexDirection: flexDir }} />)
22
- * }
23
- * ```
24
- */
25
- export default function useResponsiveValue<const T extends BreakpointValueMap<any>>(
26
- values: T
27
- ): T[keyof T];
@@ -1,4 +0,0 @@
1
- import useTheme from"./useTheme";import useActiveBreakpoint from"./useActiveBreakpoint";// eslint-disable-next-line require-jsdoc
2
- var useResponsiveValue=function useResponsiveValue(values){var theme=useTheme();var active=useActiveBreakpoint();if(!active)return undefined;// Get the keys of the breakpoints in the theme
3
- var breakpoints=[].concat(theme.breakpoints.keys);var activeIndex=breakpoints.indexOf(active);// Walk from the active breakpoint down to smallest
4
- for(var i=activeIndex;i>=0;i-=1){var bp=breakpoints[i];if(values[bp]!==undefined){return values[bp];}}return undefined;};export default useResponsiveValue;
@@ -1,8 +0,0 @@
1
- import { type Theme } from '..';
2
-
3
- export type { Theme } from '..';
4
-
5
- /**
6
- * Returns the theme object.
7
- */
8
- export default function useTheme<T = Theme>(): T;
@@ -1,4 +0,0 @@
1
- import{useContext}from'react';import{ThemeContext}from"../providers/ThemeProvider";// eslint-disable-next-line valid-jsdoc
2
- /**
3
- * Returns the theme object.
4
- */var useTheme=function useTheme(){return useContext(ThemeContext);};export default useTheme;
@@ -1,8 +0,0 @@
1
- export { default as ThemeProvider } from './providers/ThemeProvider';
2
- export { createTheme, Theme, Breakpoint } from './createTheme';
3
- export {
4
- useActiveBreakpoint,
5
- useMediaQuery,
6
- useResponsiveValue,
7
- useTheme,
8
- } from './hooks';
@@ -1 +0,0 @@
1
- export{default as ThemeProvider}from"./providers/ThemeProvider";export{createTheme}from"./createTheme";export{useActiveBreakpoint,useMediaQuery,useResponsiveValue,useTheme}from"./hooks";
@@ -1,21 +0,0 @@
1
- import { ReactNode, JSX, Context } from 'react';
2
- import { Breakpoint } from '..';
3
-
4
- /**
5
- * React Context for current active breakpoint.
6
- */
7
- export const ActiveBreakpointContext: Context<Breakpoint | undefined>;
8
-
9
- /**
10
- * Props for the ActiveBreakpointProvider.
11
- */
12
- export interface ActiveBreakpointProviderProps {
13
- children: ReactNode;
14
- }
15
-
16
- /**
17
- * Provides the current active breakpoint to child components.
18
- */
19
- declare function ActiveBreakpointProvider(props: ActiveBreakpointProviderProps): JSX.Element;
20
-
21
- export default ActiveBreakpointProvider;
@@ -1,13 +0,0 @@
1
- function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import React,{createContext,useEffect,useState}from'react';import PropTypes from'prop-types';import{useTheme}from'@shopgate/engage/styles';/**
2
- * @typedef {import('..').Breakpoint} Breakpoint
3
- */ /** @type {import('react').Context<Breakpoint>} */export var ActiveBreakpointContext=createContext(undefined);/**
4
- * @param {Object} props The component props
5
- * @param {React.ReactNode} props.children The children to render within the provider
6
- * @returns {JSX.Element} The ActiveBreakpointProvider component
7
- */var ActiveBreakpointProvider=function ActiveBreakpointProvider(_ref){var children=_ref.children;var theme=useTheme();// ['xl', 'lg', ..., 'xs']
8
- var breakpoints=[].concat(theme.breakpoints.keys).reverse();/**
9
- * Retrieve the initial breakpoint based on the current window size.
10
- * @returns {Breakpoint|undefined} The initial breakpoint based on the current window size.
11
- */var getInitialBreakpoint=function getInitialBreakpoint(){if(typeof window==='undefined')return undefined;return breakpoints.find(function(bp){return window.matchMedia(theme.breakpoints.up(bp).replace(/^@media( ?)/m,'')).matches;});};/** @type {[Breakpoint, React.Dispatch<React.SetStateAction<Breakpoint>>]} */var _useState=useState(getInitialBreakpoint),_useState2=_slicedToArray(_useState,2),active=_useState2[0],setActive=_useState2[1];useEffect(function(){if(typeof window==='undefined')return undefined;var queries=breakpoints.map(function(bp){return{bp:bp,mql:window.matchMedia(theme.breakpoints.up(bp).replace(/^@media( ?)/m,''))};});/**
12
- * Updates the active breakpoint based on the current media query matches.
13
- */var update=function update(){var matched=queries.find(function(_ref2){var mql=_ref2.mql;return mql.matches;});setActive(matched===null||matched===void 0?void 0:matched.bp);};queries.forEach(function(_ref3){var mql=_ref3.mql;return mql.addEventListener('change',update);});return function(){return queries.forEach(function(_ref4){var mql=_ref4.mql;return mql.removeEventListener('change',update);});};},[breakpoints,theme]);return React.createElement(ActiveBreakpointContext.Provider,{value:active},children);};export default ActiveBreakpointProvider;
@@ -1,18 +0,0 @@
1
- import { Theme } from '..';
2
-
3
- export const ThemeContext: React.Context<Theme>;
4
-
5
- export interface ThemeProviderProps<Theme = Theme> {
6
- children: React.ReactNode;
7
- /**
8
- * The theme object to provide to the context.
9
- */
10
- theme: Partial<Theme> | ((outerTheme: Theme) => Theme);
11
- }
12
-
13
- /**
14
- * The ThemeProvider component provides the theme context to its children.
15
- */
16
- export default function ThemeProvider<T = Theme>(
17
- props: ThemeProviderProps<T>
18
- ): React.ReactElement<ThemeProviderProps<T>>;
@@ -1,7 +0,0 @@
1
- import React,{createContext,memo}from'react';import PropTypes from'prop-types';import ActiveBreakpointProvider from"./ActiveBreakpointProvider";/** @typedef {import('../index').Theme} Theme */ /** @type {import('react').Context<Theme>} */export var ThemeContext=createContext();/**
2
- * The ThemeProvider component provides the theme context to its children.
3
- * @param {Object} props The component props
4
- * @param {Theme} props.theme The theme object to provide
5
- * @param {React.ReactNode} props.children The children to render within the provider
6
- * @returns {JSX.Element} The ThemeProvider component
7
- */var ThemeProvider=function ThemeProvider(_ref){var children=_ref.children,theme=_ref.theme;return React.createElement(ThemeContext.Provider,{value:theme},React.createElement(ActiveBreakpointProvider,null,children));};export default memo(ThemeProvider);
@@ -1,3 +0,0 @@
1
- import createCache from'@emotion/cache';import{createMakeAndWithStyles,createTss}from'tss-react';import{useTheme}from'@shopgate/engage/styles';export{GlobalStyles,keyframes}from'tss-react';export var emotionCache=createCache({// All tss-react styles will be prefixed with `.tss-*` instead of `.css-*`
2
- key:'tss'});var _createTss=createTss({useContext:useTheme}),tss=_createTss.tss;// Create makeStyles and withStyles functions for tss-react package
3
- export{tss};var _createMakeAndWithSty=createMakeAndWithStyles({useTheme:useTheme}),makeStyles=_createMakeAndWithSty.makeStyles,withStyles=_createMakeAndWithSty.withStyles;export{makeStyles,withStyles};