@pagopa/io-app-design-system 1.46.2 → 1.47.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 (98) hide show
  1. package/lib/commonjs/components/layout/BlockButtons.js +1 -1
  2. package/lib/commonjs/components/layout/FooterActions.js +162 -0
  3. package/lib/commonjs/components/layout/FooterActions.js.map +1 -0
  4. package/lib/commonjs/components/layout/FooterActionsInline.js +113 -0
  5. package/lib/commonjs/components/layout/FooterActionsInline.js.map +1 -0
  6. package/lib/commonjs/components/layout/FooterWithButtons.js +3 -1
  7. package/lib/commonjs/components/layout/FooterWithButtons.js.map +1 -1
  8. package/lib/commonjs/components/layout/hooks/index.js +28 -0
  9. package/lib/commonjs/components/layout/hooks/index.js.map +1 -0
  10. package/lib/commonjs/components/layout/hooks/useBottomMargins.js +31 -0
  11. package/lib/commonjs/components/layout/hooks/useBottomMargins.js.map +1 -0
  12. package/lib/commonjs/components/layout/hooks/useFooterActionsInlineMeasurements.js +30 -0
  13. package/lib/commonjs/components/layout/hooks/useFooterActionsInlineMeasurements.js.map +1 -0
  14. package/lib/commonjs/components/layout/hooks/useFooterActionsMeasurements.js +31 -0
  15. package/lib/commonjs/components/layout/hooks/useFooterActionsMeasurements.js.map +1 -0
  16. package/lib/commonjs/components/layout/index.js +33 -0
  17. package/lib/commonjs/components/layout/index.js.map +1 -1
  18. package/lib/commonjs/core/IOColors.js +2 -0
  19. package/lib/commonjs/core/IOColors.js.map +1 -1
  20. package/lib/commonjs/core/IOSpacing.js +10 -1
  21. package/lib/commonjs/core/IOSpacing.js.map +1 -1
  22. package/lib/commonjs/core/index.js +0 -11
  23. package/lib/commonjs/core/index.js.map +1 -1
  24. package/lib/module/components/layout/BlockButtons.js +1 -1
  25. package/lib/module/components/layout/FooterActions.js +153 -0
  26. package/lib/module/components/layout/FooterActions.js.map +1 -0
  27. package/lib/module/components/layout/FooterActionsInline.js +104 -0
  28. package/lib/module/components/layout/FooterActionsInline.js.map +1 -0
  29. package/lib/module/components/layout/FooterWithButtons.js +3 -1
  30. package/lib/module/components/layout/FooterWithButtons.js.map +1 -1
  31. package/lib/module/components/layout/hooks/index.js +3 -0
  32. package/lib/module/components/layout/hooks/index.js.map +1 -0
  33. package/lib/module/components/layout/hooks/useBottomMargins.js +25 -0
  34. package/lib/module/components/layout/hooks/useBottomMargins.js.map +1 -0
  35. package/lib/module/components/layout/hooks/useFooterActionsInlineMeasurements.js +23 -0
  36. package/lib/module/components/layout/hooks/useFooterActionsInlineMeasurements.js.map +1 -0
  37. package/lib/module/components/layout/hooks/useFooterActionsMeasurements.js +24 -0
  38. package/lib/module/components/layout/hooks/useFooterActionsMeasurements.js.map +1 -0
  39. package/lib/module/components/layout/index.js +3 -0
  40. package/lib/module/components/layout/index.js.map +1 -1
  41. package/lib/module/core/IOColors.js +2 -0
  42. package/lib/module/core/IOColors.js.map +1 -1
  43. package/lib/module/core/IOSpacing.js +9 -0
  44. package/lib/module/core/IOSpacing.js.map +1 -1
  45. package/lib/module/core/index.js +0 -1
  46. package/lib/module/core/index.js.map +1 -1
  47. package/lib/typescript/components/layout/BlockButtons.d.ts +1 -1
  48. package/lib/typescript/components/layout/FooterActions.d.ts +45 -0
  49. package/lib/typescript/components/layout/FooterActions.d.ts.map +1 -0
  50. package/lib/typescript/components/layout/FooterActionsInline.d.ts +17 -0
  51. package/lib/typescript/components/layout/FooterActionsInline.d.ts.map +1 -0
  52. package/lib/typescript/components/layout/FooterWithButtons.d.ts +3 -1
  53. package/lib/typescript/components/layout/FooterWithButtons.d.ts.map +1 -1
  54. package/lib/typescript/components/layout/HeaderFirstLevel.d.ts +7 -7
  55. package/lib/typescript/components/layout/HeaderFirstLevel.d.ts.map +1 -1
  56. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts +7 -7
  57. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts.map +1 -1
  58. package/lib/typescript/components/layout/common.d.ts +1 -1
  59. package/lib/typescript/components/layout/common.d.ts.map +1 -1
  60. package/lib/typescript/components/layout/hooks/index.d.ts +3 -0
  61. package/lib/typescript/components/layout/hooks/index.d.ts.map +1 -0
  62. package/lib/typescript/components/layout/hooks/useBottomMargins.d.ts +5 -0
  63. package/lib/typescript/components/layout/hooks/useBottomMargins.d.ts.map +1 -0
  64. package/lib/typescript/components/layout/hooks/useFooterActionsInlineMeasurements.d.ts +17 -0
  65. package/lib/typescript/components/layout/hooks/useFooterActionsInlineMeasurements.d.ts.map +1 -0
  66. package/lib/typescript/components/layout/hooks/useFooterActionsMeasurements.d.ts +17 -0
  67. package/lib/typescript/components/layout/hooks/useFooterActionsMeasurements.d.ts.map +1 -0
  68. package/lib/typescript/components/layout/index.d.ts +3 -0
  69. package/lib/typescript/components/layout/index.d.ts.map +1 -1
  70. package/lib/typescript/core/IOColors.d.ts +1 -0
  71. package/lib/typescript/core/IOColors.d.ts.map +1 -1
  72. package/lib/typescript/core/IOSpacing.d.ts +8 -0
  73. package/lib/typescript/core/IOSpacing.d.ts.map +1 -1
  74. package/lib/typescript/core/index.d.ts +0 -1
  75. package/lib/typescript/core/index.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/src/components/layout/BlockButtons.tsx +1 -1
  78. package/src/components/layout/FooterActions.tsx +260 -0
  79. package/src/components/layout/FooterActionsInline.tsx +137 -0
  80. package/src/components/layout/FooterWithButtons.tsx +3 -1
  81. package/src/components/layout/HeaderFirstLevel.tsx +7 -7
  82. package/src/components/layout/HeaderSecondLevel.tsx +7 -7
  83. package/src/components/layout/common.ts +1 -1
  84. package/src/components/layout/hooks/index.ts +2 -0
  85. package/src/components/layout/hooks/useBottomMargins.ts +30 -0
  86. package/src/components/layout/hooks/useFooterActionsInlineMeasurements.ts +38 -0
  87. package/src/components/layout/hooks/useFooterActionsMeasurements.ts +35 -0
  88. package/src/components/layout/index.tsx +3 -0
  89. package/src/core/IOColors.ts +3 -0
  90. package/src/core/IOSpacing.ts +14 -0
  91. package/src/core/index.ts +0 -1
  92. package/lib/commonjs/core/IOStyleVariables.js +0 -14
  93. package/lib/commonjs/core/IOStyleVariables.js.map +0 -1
  94. package/lib/module/core/IOStyleVariables.js +0 -7
  95. package/lib/module/core/IOStyleVariables.js.map +0 -1
  96. package/lib/typescript/core/IOStyleVariables.d.ts +0 -7
  97. package/lib/typescript/core/IOStyleVariables.d.ts.map +0 -1
  98. package/src/core/IOStyleVariables.ts +0 -6
@@ -0,0 +1,45 @@
1
+ import * as React from "react";
2
+ import { ComponentProps, PropsWithChildren } from "react";
3
+ import { ViewStyle } from "react-native";
4
+ import Animated from "react-native-reanimated";
5
+ import { WithTestID } from "../../utils/types";
6
+ import { ButtonLink, ButtonOutline, ButtonSolid } from "../buttons";
7
+ type FooterSingleButton = {
8
+ type: "SingleButton";
9
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
10
+ secondary?: never;
11
+ tertiary?: never;
12
+ };
13
+ type FooterTwoButtons = {
14
+ type: "TwoButtons";
15
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
16
+ secondary: Omit<ComponentProps<typeof ButtonLink>, "color">;
17
+ tertiary?: never;
18
+ };
19
+ type FooterThreeButtons = {
20
+ type: "ThreeButtons";
21
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
22
+ secondary: Omit<ComponentProps<typeof ButtonOutline>, "fullWidth" | "color">;
23
+ tertiary: Omit<ComponentProps<typeof ButtonLink>, "color">;
24
+ };
25
+ export type FooterActionsMeasurements = {
26
+ actionBlockHeight: number;
27
+ safeBottomAreaHeight: number;
28
+ };
29
+ type FooterActions = FooterSingleButton | FooterTwoButtons | FooterThreeButtons;
30
+ type FooterAnimatedStyles = {
31
+ mainBlock?: Animated.AnimateStyle<ViewStyle>;
32
+ background?: Animated.AnimateStyle<ViewStyle>;
33
+ };
34
+ type FooterActionsProps = WithTestID<PropsWithChildren<{
35
+ actions?: FooterActions;
36
+ onMeasure?: (measurements: FooterActionsMeasurements) => void;
37
+ animatedStyles?: FooterAnimatedStyles;
38
+ transparent?: boolean;
39
+ excludeSafeAreaMargins?: boolean;
40
+ fixed?: boolean;
41
+ debugMode?: boolean;
42
+ }>>;
43
+ export declare const FooterActions: ({ actions, excludeSafeAreaMargins, animatedStyles, fixed, transparent, onMeasure, testID, debugMode }: FooterActionsProps) => React.JSX.Element;
44
+ export {};
45
+ //# sourceMappingURL=FooterActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FooterActions.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/FooterActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAY,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAC9E,OAAO,EAOL,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAW/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIpE,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/D,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IAC/D,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;IAC7E,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,iBAAiB,EAAE,MAAM,CAAC;IAS1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,aAAa,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEhF,KAAK,oBAAoB,GAAG;IAE1B,SAAS,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE7C,UAAU,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;CAC/C,CAAC;AAEF,KAAK,kBAAkB,GAAG,UAAU,CAClC,iBAAiB,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC9D,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEtC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAIhB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CACH,CAAC;AAgCF,eAAO,MAAM,aAAa,0GASvB,kBAAkB,sBAuFpB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { ComponentProps, PropsWithChildren } from "react";
3
+ import { WithTestID } from "../../utils/types";
4
+ import { ButtonOutline, ButtonSolid } from "../buttons";
5
+ export type FooterActionsInlineMeasurements = {
6
+ safeBottomAreaHeight: number;
7
+ };
8
+ type FooterActionsInline = WithTestID<PropsWithChildren<{
9
+ startAction: Omit<ComponentProps<typeof ButtonOutline>, "fullWidth">;
10
+ endAction: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
11
+ onMeasure?: (measurements: FooterActionsInlineMeasurements) => void;
12
+ excludeSafeAreaMargins?: boolean;
13
+ fixed?: boolean;
14
+ }>>;
15
+ export declare const FooterActionsInline: ({ startAction, endAction, excludeSafeAreaMargins, fixed, onMeasure, testID }: FooterActionsInline) => React.JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=FooterActionsInline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FooterActionsInline.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/FooterActionsInline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAW1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIxD,MAAM,MAAM,+BAA+B,GAAG;IAS5C,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,mBAAmB,GAAG,UAAU,CACnC,iBAAiB,CAAC;IAChB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;IACrE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IACjE,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,+BAA+B,KAAK,IAAI,CAAC;IAEpE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CACH,CAAC;AA0BF,eAAO,MAAM,mBAAmB,iFAO7B,mBAAmB,sBAgErB,CAAC"}
@@ -7,7 +7,9 @@ type Props = BlockButtonsProps & {
7
7
  /**
8
8
  * Implements a component that show buttons as sticky footer
9
9
  * It can include 1, 2 or 3 buttons. If they are 2, they can have the inlineHalf or the inlineOneThird style
10
- * @deprecated This component is deprecated. Use `FooterActions` in the main `io-app` repo instead.
10
+ * @deprecated This component is deprecated. Use `FooterActions` or `FooterActionsInline` instead.
11
+ * `FooterActionsInline` is the official replacement for `FooterWithButtons`, but use it only
12
+ * if explicitly required.
11
13
  */
12
14
  export declare const FooterWithButtons: ({ sticky, onLayoutChange, ...rest }: Props) => React.JSX.Element;
13
15
  export default FooterWithButtons;
@@ -1 +1 @@
1
- {"version":3,"file":"FooterWithButtons.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/FooterWithButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,KAAK,KAAK,GAAG,iBAAiB,GAAG;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAgCF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,wCAI3B,KAAK,sBAiCP,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"FooterWithButtons.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/FooterWithButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,KAAK,KAAK,GAAG,iBAAiB,GAAG;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAgCF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,wCAI3B,KAAK,sBAiCP,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { WithTestID } from "../../utils/types";
3
- import { ActionProp } from "./common";
3
+ import { HeaderActionProps } from "./common";
4
4
  type CommonProps = WithTestID<{
5
5
  title: string;
6
6
  backgroundColor?: "light" | "dark";
@@ -14,21 +14,21 @@ interface Base extends CommonProps {
14
14
  }
15
15
  interface OneAction extends CommonProps {
16
16
  type: "singleAction";
17
- firstAction: ActionProp;
17
+ firstAction: HeaderActionProps;
18
18
  secondAction?: never;
19
19
  thirdAction?: never;
20
20
  }
21
21
  interface TwoActions extends CommonProps {
22
22
  type: "twoActions";
23
- firstAction: ActionProp;
24
- secondAction: ActionProp;
23
+ firstAction: HeaderActionProps;
24
+ secondAction: HeaderActionProps;
25
25
  thirdAction?: never;
26
26
  }
27
27
  interface ThreeActions extends CommonProps {
28
28
  type: "threeActions";
29
- firstAction: ActionProp;
30
- secondAction: ActionProp;
31
- thirdAction: ActionProp;
29
+ firstAction: HeaderActionProps;
30
+ secondAction: HeaderActionProps;
31
+ thirdAction: HeaderActionProps;
32
32
  }
33
33
  export type HeaderFirstLevel = Base | OneAction | TwoActions | ThreeActions;
34
34
  export declare const HeaderFirstLevel: ({ title, type, testID, backgroundColor, ignoreSafeAreaMargin, firstAction, secondAction, thirdAction }: HeaderFirstLevel) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderFirstLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/HeaderFirstLevel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,KAAK,WAAW,GAAG,UAAU,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH,UAAU,IAAK,SAAQ,WAAW;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,SAAU,SAAQ,WAAW;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,WAAW;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,WAAW,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAe5E,eAAO,MAAM,gBAAgB,2GAS1B,gBAAgB,sBAmFlB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"HeaderFirstLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/HeaderFirstLevel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,KAAK,WAAW,GAAG,UAAU,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH,UAAU,IAAK,SAAQ,WAAW;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,SAAU,SAAQ,WAAW;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,WAAW;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAe5E,eAAO,MAAM,gBAAgB,2GAS1B,gBAAgB,sBAmFlB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import Animated, { AnimatedRef, SharedValue } from "react-native-reanimated";
3
3
  import { WithTestID } from "../../utils/types";
4
- import { ActionProp } from "./common";
4
+ import { HeaderActionProps } from "./common";
5
5
  type ScrollValues = {
6
6
  contentOffsetY: SharedValue<number>;
7
7
  triggerOffset: number;
@@ -38,21 +38,21 @@ interface Base extends CommonProps {
38
38
  }
39
39
  interface OneAction extends CommonProps {
40
40
  type: "singleAction";
41
- firstAction: ActionProp;
41
+ firstAction: HeaderActionProps;
42
42
  secondAction?: never;
43
43
  thirdAction?: never;
44
44
  }
45
45
  interface TwoActions extends CommonProps {
46
46
  type: "twoActions";
47
- firstAction: ActionProp;
48
- secondAction: ActionProp;
47
+ firstAction: HeaderActionProps;
48
+ secondAction: HeaderActionProps;
49
49
  thirdAction?: never;
50
50
  }
51
51
  interface ThreeActions extends CommonProps {
52
52
  type: "threeActions";
53
- firstAction: ActionProp;
54
- secondAction: ActionProp;
55
- thirdAction: ActionProp;
53
+ firstAction: HeaderActionProps;
54
+ secondAction: HeaderActionProps;
55
+ thirdAction: HeaderActionProps;
56
56
  }
57
57
  export type HeaderSecondLevel = BackProps & DiscreteTransitionProps & (Base | OneAction | TwoActions | ThreeActions);
58
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderSecondLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/HeaderSecondLevel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,QAAQ,EAAE,EACf,WAAW,EACX,WAAW,EASZ,MAAM,yBAAyB,CAAC;AAejC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,KAAK,YAAY,GAAG;IAClB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,uBAAuB,GACxB;IACE,wBAAwB,EAAE,IAAI,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC/C,GACD;IACE,wBAAwB,CAAC,EAAE,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC;AAEN,KAAK,SAAS,GACV;IACE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,sBAAsB,CAAC,EAAE,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAEN,KAAK,WAAW,GAAG,UAAU,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH,UAAU,IAAK,SAAQ,WAAW;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,SAAU,SAAQ,WAAW;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,WAAW;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,WAAW,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GACvC,uBAAuB,GACvB,CAAC,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC;AA8BjD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,kOAiB3B,iBAAiB,sBAqLnB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"HeaderSecondLevel.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/HeaderSecondLevel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,QAAQ,EAAE,EACf,WAAW,EACX,WAAW,EASZ,MAAM,yBAAyB,CAAC;AAejC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,KAAK,YAAY,GAAG;IAClB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,uBAAuB,GACxB;IACE,wBAAwB,EAAE,IAAI,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC/C,GACD;IACE,wBAAwB,CAAC,EAAE,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC;AAEN,KAAK,SAAS,GACV;IACE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,sBAAsB,CAAC,EAAE,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAEN,KAAK,WAAW,GAAG,UAAU,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH,UAAU,IAAK,SAAQ,WAAW;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,SAAU,SAAQ,WAAW;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,WAAW;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GACvC,uBAAuB,GACvB,CAAC,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC;AA8BjD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,kOAiB3B,iBAAiB,sBAqLnB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
2
  import { IconButton } from "../buttons";
3
- export type ActionProp = Pick<React.ComponentProps<typeof IconButton>, "icon" | "onPress" | "accessibilityLabel" | "accessibilityHint" | "testID">;
3
+ export type HeaderActionProps = Pick<React.ComponentProps<typeof IconButton>, "icon" | "onPress" | "accessibilityLabel" | "accessibilityHint" | "testID">;
4
4
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,IAAI,CAC3B,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EACvC,MAAM,GAAG,SAAS,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,QAAQ,CAC3E,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EACvC,MAAM,GAAG,SAAS,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,QAAQ,CAC3E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./useFooterActionsMeasurements";
2
+ export * from "./useFooterActionsInlineMeasurements";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const useBottomMargins: (withSecondaryAction?: boolean, excludeSafeAreaMargins?: boolean) => {
2
+ bottomMargin: number;
3
+ extraBottomMargin: number;
4
+ };
5
+ //# sourceMappingURL=useBottomMargins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBottomMargins.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/hooks/useBottomMargins.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,yBACN,OAAO,2BACJ,OAAO;;;CAoBhC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { FooterActionsInlineMeasurements } from "../FooterActionsInline";
2
+ type UseFooterActionsInlineMeasurementsProps = {
3
+ footerActionsInlineMeasurements: FooterActionsInlineMeasurements;
4
+ handleFooterActionsInlineMeasurements: (values: FooterActionsInlineMeasurements) => void;
5
+ };
6
+ /**
7
+ * Custom hook to handle the `FooterActions` measurements
8
+ * @returns
9
+ * - `footerActionsInlineMeasurements`
10
+ * Object containing the `FooterActionsInline` measurements
11
+ * - `handleFooterActionsInlineMeasurements`
12
+ * Function to update the footer actions measurements
13
+ * (to be applied to `onMeasure` prop of `FooterActionsInline`)
14
+ */
15
+ export declare const useFooterActionsInlineMeasurements: () => UseFooterActionsInlineMeasurementsProps;
16
+ export {};
17
+ //# sourceMappingURL=useFooterActionsInlineMeasurements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFooterActionsInlineMeasurements.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/hooks/useFooterActionsInlineMeasurements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,KAAK,uCAAuC,GAAG;IAC7C,+BAA+B,EAAE,+BAA+B,CAAC;IACjE,qCAAqC,EAAE,CACrC,MAAM,EAAE,+BAA+B,KACpC,IAAI,CAAC;CACX,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,QACzC,uCAkBH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { FooterActionsMeasurements } from "../FooterActions";
2
+ type UseFooterActionsMeasurementsProps = {
3
+ footerActionsMeasurements: FooterActionsMeasurements;
4
+ handleFooterActionsMeasurements: (values: FooterActionsMeasurements) => void;
5
+ };
6
+ /**
7
+ * Custom hook to handle the `FooterActions` measurements
8
+ * @returns
9
+ * - `footerActionsMeasurements`
10
+ * Object containing the `FooterActions` measurements
11
+ * - `handleFooterActionsMeasurements`
12
+ * Function to update the footer actions measurements
13
+ * (to be applied to `onMeasure` prop of `FooterActions`)
14
+ */
15
+ export declare const useFooterActionsMeasurements: () => UseFooterActionsMeasurementsProps;
16
+ export {};
17
+ //# sourceMappingURL=useFooterActionsMeasurements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFooterActionsMeasurements.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/hooks/useFooterActionsMeasurements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,KAAK,iCAAiC,GAAG;IACvC,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,+BAA+B,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC9E,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,QACnC,iCAiBH,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from "./BlockButtons";
2
+ export * from "./FooterActions";
3
+ export * from "./FooterActionsInline";
2
4
  export * from "./FooterWithButtons";
3
5
  export * from "./ForceScrollDownView";
4
6
  export * from "./GradientBottomActions";
@@ -7,4 +9,5 @@ export * from "./HeaderFirstLevel";
7
9
  export * from "./HeaderSecondLevel";
8
10
  export * from "./ModalBSHeader";
9
11
  export * from "./common";
12
+ export * from "./hooks";
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -196,6 +196,7 @@ export type IOTheme = {
196
196
  "icon-default": IOColors;
197
197
  "icon-decorative": IOColors;
198
198
  "divider-default": IOColors;
199
+ "divider-bottomBar": IOColors;
199
200
  errorIcon: IOColors;
200
201
  errorText: IOColors;
201
202
  "pictogram-hands": IOColors;
@@ -1 +1 @@
1
- {"version":3,"file":"IOColors.d.ts","sourceRoot":"","sources":["../../../src/core/IOColors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IOColors.d.ts","sourceRoot":"","sources":["../../../src/core/IOColors.ts"],"names":[],"mappings":"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"}
@@ -21,4 +21,12 @@ export declare const IOModuleIDPHSpacing: IOModuleIDPSpacing;
21
21
  export declare const IOModuleIDPVSpacing: IOModuleIDPSpacing;
22
22
  export declare const IOModuleIDPSavedVSpacing: IOModuleIDPSpacing;
23
23
  export declare const IOListItemLogoMargin: IOModuleIDPSpacing;
24
+ declare const spacingConstantKeys: readonly ["screenEndMargin"];
25
+ export type IOSpacingConstants = {
26
+ [K in (typeof spacingConstantKeys)[number]]: IOSpacingScale;
27
+ };
28
+ export declare const IOSpacing: {
29
+ readonly screenEndMargin: 32;
30
+ };
31
+ export {};
24
32
  //# sourceMappingURL=IOSpacing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IOSpacing.d.ts","sourceRoot":"","sources":["../../../src/core/IOSpacing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,wEAEjB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,eAAO,MAAM,QAAQ,yCAE6B,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjD,eAAO,MAAM,WAAW,8BAE0B,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAGvD,eAAO,MAAM,cAAc,mBAEuB,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/D,eAAO,MAAM,kBAAkB,EAAE,eAAoB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAE,eAAoB,CAAC;AACzD,eAAO,MAAM,qBAAqB,EAAE,eAAoB,CAAC;AAGzD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,eAAO,MAAM,aAAa,EAAE,YAAgB,CAAC;AAC7C,eAAO,MAAM,aAAa,EAAE,YAAgB,CAAC;AAG7C,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,eAAO,MAAM,eAAe,EAAE,cAAkB,CAAC;AACjD,eAAO,MAAM,eAAe,EAAE,cAAkB,CAAC;AAGjD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACtE,eAAO,MAAM,mBAAmB,EAAE,kBAAuB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,EAAE,kBAAuB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,kBAAuB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,EAAE,kBAAsB,CAAC"}
1
+ {"version":3,"file":"IOSpacing.d.ts","sourceRoot":"","sources":["../../../src/core/IOSpacing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,wEAEjB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,eAAO,MAAM,QAAQ,yCAE6B,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjD,eAAO,MAAM,WAAW,8BAE0B,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAGvD,eAAO,MAAM,cAAc,mBAEuB,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG7D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/D,eAAO,MAAM,kBAAkB,EAAE,eAAoB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAE,eAAoB,CAAC;AACzD,eAAO,MAAM,qBAAqB,EAAE,eAAoB,CAAC;AAGzD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,eAAO,MAAM,aAAa,EAAE,YAAgB,CAAC;AAC7C,eAAO,MAAM,aAAa,EAAE,YAAgB,CAAC;AAG7C,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,eAAO,MAAM,eAAe,EAAE,cAAkB,CAAC;AACjD,eAAO,MAAM,eAAe,EAAE,cAAkB,CAAC;AAGjD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACtE,eAAO,MAAM,mBAAmB,EAAE,kBAAuB,CAAC;AAC1D,eAAO,MAAM,mBAAmB,EAAE,kBAAuB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,EAAE,kBAAuB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,EAAE,kBAAsB,CAAC;AAM1D,QAAA,MAAM,mBAAmB,8BAA+B,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAAG;KAC9B,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,GAAG,cAAc;CAC5D,CAAC;AAEF,eAAO,MAAM,SAAS;;CAEiB,CAAC"}
@@ -4,7 +4,6 @@ export * from "./IOTransitions";
4
4
  export * from "./IOStyles";
5
5
  export * from "./IOShapes";
6
6
  export * from "./IOSpacing";
7
- export * from "./IOStyleVariables";
8
7
  export * from "./IODSExperimentalContextProvider";
9
8
  export * from "./IOThemeContextProvider";
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/io-app-design-system",
3
- "version": "1.46.2",
3
+ "version": "1.47.0",
4
4
  "description": "The library defining the core components of the design system of @pagopa/io-app",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -77,7 +77,7 @@ export type BlockButtonsProps = Props;
77
77
 
78
78
  /**
79
79
  * Implements a component that show buttons on a line on 1, 2 or 3 buttons
80
- * @deprecated This component is deprecated.
80
+ * @deprecated This component is deprecated. Use `FooterActionsInline` instead.
81
81
  */
82
82
  export const BlockButtons = (props: Props) => {
83
83
  const renderRightButton = () => {
@@ -0,0 +1,260 @@
1
+ import * as React from "react";
2
+ import { ComponentProps, Fragment, PropsWithChildren, useState } from "react";
3
+ import {
4
+ ColorValue,
5
+ LayoutChangeEvent,
6
+ LayoutRectangle,
7
+ StyleSheet,
8
+ Text,
9
+ View,
10
+ ViewStyle
11
+ } from "react-native";
12
+ import Animated from "react-native-reanimated";
13
+ import {
14
+ IOColors,
15
+ IOSpacer,
16
+ IOSpacing,
17
+ IOVisualCostants,
18
+ buttonSolidHeight,
19
+ hexToRgba,
20
+ useIOExperimentalDesign,
21
+ useIOTheme
22
+ } from "../../core";
23
+ import { WithTestID } from "../../utils/types";
24
+ import { ButtonLink, ButtonOutline, ButtonSolid } from "../buttons";
25
+ import { VSpacer } from "../spacer";
26
+ import { useBottomMargins } from "./hooks/useBottomMargins";
27
+
28
+ type FooterSingleButton = {
29
+ type: "SingleButton";
30
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
31
+ secondary?: never;
32
+ tertiary?: never;
33
+ };
34
+
35
+ type FooterTwoButtons = {
36
+ type: "TwoButtons";
37
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
38
+ secondary: Omit<ComponentProps<typeof ButtonLink>, "color">;
39
+ tertiary?: never;
40
+ };
41
+
42
+ type FooterThreeButtons = {
43
+ type: "ThreeButtons";
44
+ primary: Omit<ComponentProps<typeof ButtonSolid>, "fullWidth">;
45
+ secondary: Omit<ComponentProps<typeof ButtonOutline>, "fullWidth" | "color">;
46
+ tertiary: Omit<ComponentProps<typeof ButtonLink>, "color">;
47
+ };
48
+
49
+ export type FooterActionsMeasurements = {
50
+ // Height of the "Actions" block
51
+ actionBlockHeight: number;
52
+ /* Height of the safe bottom area. It includes:
53
+ - Margin between screen content
54
+ and actions (contentEndMargin)
55
+ - Actions block height
56
+ - Eventual safe area margin (bottomMargin)
57
+ This is the total bottom padding that needs
58
+ to be applied to the ScrollView.
59
+ */
60
+ safeBottomAreaHeight: number;
61
+ };
62
+
63
+ type FooterActions = FooterSingleButton | FooterTwoButtons | FooterThreeButtons;
64
+
65
+ type FooterAnimatedStyles = {
66
+ /* Apply object returned by `useAnimatedStyle` to the main block */
67
+ mainBlock?: Animated.AnimateStyle<ViewStyle>;
68
+ /* Apply object returned by `useAnimatedStyle` to the background */
69
+ background?: Animated.AnimateStyle<ViewStyle>;
70
+ };
71
+
72
+ type FooterActionsProps = WithTestID<
73
+ PropsWithChildren<{
74
+ actions?: FooterActions;
75
+ onMeasure?: (measurements: FooterActionsMeasurements) => void;
76
+ animatedStyles?: FooterAnimatedStyles;
77
+ /* Make the background transparent */
78
+ transparent?: boolean;
79
+ /* Don't include safe area insets */
80
+ excludeSafeAreaMargins?: boolean;
81
+ /* Fixed at the bottom of the screen */
82
+ fixed?: boolean;
83
+ /* Show the following elements:
84
+ - Opaque red background to show the component boundaries
85
+ - Height of the component */
86
+ debugMode?: boolean;
87
+ }>
88
+ >;
89
+
90
+ /* Margin between ButtonSolid and ButtonOutline */
91
+ const spaceBetweenActions: IOSpacer = 16;
92
+ /* Margin between ButtonSolid and ButtonLink */
93
+ const spaceBetweenActionAndLink: IOSpacer = 16;
94
+
95
+ const styles = StyleSheet.create({
96
+ buttonContainer: {
97
+ paddingHorizontal: IOVisualCostants.appMarginDefault,
98
+ width: "100%",
99
+ flexShrink: 0
100
+ },
101
+ debugText: {
102
+ position: "absolute",
103
+ right: 8,
104
+ top: -16,
105
+ color: IOColors.black,
106
+ fontSize: 9,
107
+ opacity: 0.75
108
+ },
109
+ blockShadow: {
110
+ shadowColor: IOColors.black,
111
+ shadowOffset: {
112
+ width: 0,
113
+ height: -4
114
+ },
115
+ shadowOpacity: 0.1,
116
+ shadowRadius: 32
117
+ }
118
+ });
119
+
120
+ export const FooterActions = ({
121
+ actions,
122
+ excludeSafeAreaMargins = false,
123
+ animatedStyles,
124
+ fixed = true,
125
+ transparent = false,
126
+ onMeasure,
127
+ testID,
128
+ debugMode = false
129
+ }: FooterActionsProps) => {
130
+ const theme = useIOTheme();
131
+ const { isExperimental } = useIOExperimentalDesign();
132
+
133
+ const { bottomMargin, extraBottomMargin } = useBottomMargins(
134
+ !!actions?.secondary,
135
+ excludeSafeAreaMargins
136
+ );
137
+
138
+ /* Total height of actions */
139
+ const [actionBlockHeight, setActionBlockHeight] =
140
+ useState<LayoutRectangle["height"]>(0);
141
+
142
+ /* Background color should be app main background
143
+ (both light and dark themes) */
144
+ const HEADER_BG_COLOR: ColorValue = IOColors[theme["appBackground-primary"]];
145
+ const TRANSPARENT_BG_COLOR: ColorValue = "transparent";
146
+ const BUTTONSOLID_HEIGHT = isExperimental ? buttonSolidHeight : 40;
147
+
148
+ /* Safe background block. Cover everything until it reaches
149
+ the half of the primary action button. It avoids
150
+ glitchy behavior underneath. */
151
+ const safeBackgroundBlockHeight =
152
+ bottomMargin + actionBlockHeight - BUTTONSOLID_HEIGHT / 2;
153
+
154
+ const getActionBlockMeasurements = (event: LayoutChangeEvent) => {
155
+ const { height } = event.nativeEvent.layout;
156
+ setActionBlockHeight(height);
157
+ /* Height of the safe bottom area, applied to the ScrollView:
158
+ Actions + Content end margin */
159
+ const safeBottomAreaHeight =
160
+ bottomMargin + height + IOSpacing.screenEndMargin;
161
+ onMeasure?.({ actionBlockHeight: height, safeBottomAreaHeight });
162
+ };
163
+
164
+ return (
165
+ <Animated.View
166
+ style={[
167
+ {
168
+ width: "100%",
169
+ paddingBottom: bottomMargin
170
+ },
171
+ fixed
172
+ ? { position: "absolute", bottom: 0 }
173
+ : { marginTop: IOSpacing.screenEndMargin },
174
+ debugMode && {
175
+ backgroundColor: hexToRgba(IOColors["error-500"], 0.15)
176
+ },
177
+ animatedStyles?.mainBlock
178
+ ]}
179
+ testID={testID}
180
+ >
181
+ {/* Safe background block. It's added because when you swipe up
182
+ quickly, the content below is visible for about 100ms. Without this
183
+ block, the content scrolls underneath. */}
184
+ <Animated.View
185
+ style={[
186
+ {
187
+ ...(fixed && {
188
+ width: "100%",
189
+ height: safeBackgroundBlockHeight,
190
+ position: "absolute",
191
+ bottom: 0,
192
+ backgroundColor: transparent
193
+ ? TRANSPARENT_BG_COLOR
194
+ : HEADER_BG_COLOR
195
+ }),
196
+ ...(fixed ? styles.blockShadow : null)
197
+ },
198
+ animatedStyles?.background
199
+ ]}
200
+ pointerEvents="none"
201
+ />
202
+
203
+ <View
204
+ style={styles.buttonContainer}
205
+ onLayout={getActionBlockMeasurements}
206
+ pointerEvents="box-none"
207
+ >
208
+ {debugMode && (
209
+ <Text style={styles.debugText}>{`Height: ${actionBlockHeight}`}</Text>
210
+ )}
211
+
212
+ {renderActions(actions, extraBottomMargin)}
213
+ </View>
214
+ </Animated.View>
215
+ );
216
+ };
217
+
218
+ const renderActions = (
219
+ actions: FooterActions | undefined,
220
+ extraBottomMargin: number
221
+ ) => {
222
+ if (!actions) {
223
+ return null;
224
+ }
225
+ const {
226
+ type,
227
+ primary: primaryAction,
228
+ secondary: secondaryAction,
229
+ tertiary: tertiaryAction
230
+ } = actions;
231
+ return (
232
+ <Fragment>
233
+ {primaryAction && <ButtonSolid fullWidth {...primaryAction} />}
234
+ {type === "TwoButtons" && secondaryAction && (
235
+ <View style={{ alignSelf: "center", marginBottom: extraBottomMargin }}>
236
+ <VSpacer size={spaceBetweenActionAndLink} />
237
+ <ButtonLink color="primary" {...secondaryAction} />
238
+ </View>
239
+ )}
240
+ {type === "ThreeButtons" && (
241
+ <>
242
+ {secondaryAction && (
243
+ <>
244
+ <VSpacer size={spaceBetweenActions} />
245
+ <ButtonOutline fullWidth color="primary" {...secondaryAction} />
246
+ </>
247
+ )}
248
+ {tertiaryAction && (
249
+ <View
250
+ style={{ alignSelf: "center", marginBottom: extraBottomMargin }}
251
+ >
252
+ <VSpacer size={spaceBetweenActionAndLink} />
253
+ <ButtonLink color="primary" {...tertiaryAction} />
254
+ </View>
255
+ )}
256
+ </>
257
+ )}
258
+ </Fragment>
259
+ );
260
+ };