@metamask-previews/design-system-react-native 0.0.0-preview.5f5c97a → 0.0.0-preview.646ebcc

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 (61) hide show
  1. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.cjs +32 -55
  2. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.cjs.map +1 -1
  3. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.d.cts +1 -1
  4. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.d.cts.map +1 -1
  5. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.d.mts +1 -1
  6. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.d.mts.map +1 -1
  7. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.mjs +34 -57
  8. package/dist/components/Button/variants/ButtonPrimary/ButtonPrimary.mjs.map +1 -1
  9. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.cjs +48 -50
  10. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.cjs.map +1 -1
  11. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.d.cts +1 -1
  12. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.d.cts.map +1 -1
  13. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.d.mts +1 -1
  14. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.d.mts.map +1 -1
  15. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.mjs +49 -51
  16. package/dist/components/Button/variants/ButtonSecondary/ButtonSecondary.mjs.map +1 -1
  17. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.cjs +52 -55
  18. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.cjs.map +1 -1
  19. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.d.cts +1 -1
  20. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.d.cts.map +1 -1
  21. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.d.mts +1 -1
  22. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.d.mts.map +1 -1
  23. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.mjs +53 -56
  24. package/dist/components/Button/variants/ButtonTertiary/ButtonTertiary.mjs.map +1 -1
  25. package/dist/components/ButtonBase/ButtonBase.cjs +110 -28
  26. package/dist/components/ButtonBase/ButtonBase.cjs.map +1 -1
  27. package/dist/components/ButtonBase/ButtonBase.constants.cjs +10 -0
  28. package/dist/components/ButtonBase/ButtonBase.constants.cjs.map +1 -0
  29. package/dist/components/ButtonBase/ButtonBase.constants.d.cts +3 -0
  30. package/dist/components/ButtonBase/ButtonBase.constants.d.cts.map +1 -0
  31. package/dist/components/ButtonBase/ButtonBase.constants.d.mts +3 -0
  32. package/dist/components/ButtonBase/ButtonBase.constants.d.mts.map +1 -0
  33. package/dist/components/ButtonBase/ButtonBase.constants.mjs +7 -0
  34. package/dist/components/ButtonBase/ButtonBase.constants.mjs.map +1 -0
  35. package/dist/components/ButtonBase/ButtonBase.d.cts +1 -1
  36. package/dist/components/ButtonBase/ButtonBase.d.cts.map +1 -1
  37. package/dist/components/ButtonBase/ButtonBase.d.mts +1 -1
  38. package/dist/components/ButtonBase/ButtonBase.d.mts.map +1 -1
  39. package/dist/components/ButtonBase/ButtonBase.mjs +88 -26
  40. package/dist/components/ButtonBase/ButtonBase.mjs.map +1 -1
  41. package/dist/components/ButtonBase/ButtonBase.types.cjs.map +1 -1
  42. package/dist/components/ButtonBase/ButtonBase.types.d.cts +42 -2
  43. package/dist/components/ButtonBase/ButtonBase.types.d.cts.map +1 -1
  44. package/dist/components/ButtonBase/ButtonBase.types.d.mts +42 -2
  45. package/dist/components/ButtonBase/ButtonBase.types.d.mts.map +1 -1
  46. package/dist/components/ButtonBase/ButtonBase.types.mjs.map +1 -1
  47. package/dist/components/ButtonBase/index.cjs +3 -1
  48. package/dist/components/ButtonBase/index.cjs.map +1 -1
  49. package/dist/components/ButtonBase/index.d.cts +1 -0
  50. package/dist/components/ButtonBase/index.d.cts.map +1 -1
  51. package/dist/components/ButtonBase/index.d.mts +1 -0
  52. package/dist/components/ButtonBase/index.d.mts.map +1 -1
  53. package/dist/components/ButtonBase/index.mjs +1 -0
  54. package/dist/components/ButtonBase/index.mjs.map +1 -1
  55. package/dist/types/index.cjs +3 -3
  56. package/dist/types/index.cjs.map +1 -1
  57. package/dist/types/index.d.cts +3 -3
  58. package/dist/types/index.d.mts +3 -3
  59. package/dist/types/index.mjs +3 -3
  60. package/dist/types/index.mjs.map +1 -1
  61. package/package.json +3 -3
@@ -5,77 +5,75 @@ function $importDefault(module) {
5
5
  return module;
6
6
  }
7
7
  import { useTailwind } from "@metamask-previews/design-system-twrnc-preset";
8
- import $React, { useState } from "react";
8
+ import $React, { useCallback } from "react";
9
9
  const React = $importDefault($React);
10
10
  import { ButtonBase } from "../../../ButtonBase/index.mjs";
11
11
  import { IconSize } from "../../../Icon/index.mjs";
12
12
  import { TextVariant, FontWeight } from "../../../Text/index.mjs";
13
- export const ButtonSecondary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, onPressIn, onPressOut, twClassName = '', style, ...props }) => {
14
- const [isPressed, setIsPressed] = useState(false);
13
+ export const ButtonSecondary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, twClassName = '', style, ...props }) => {
15
14
  const tw = useTailwind();
16
- const twContainerClassNames = `
17
- ${isInverse && isDanger
18
- ? isPressed || isLoading
19
- ? 'bg-default-pressed'
20
- : 'bg-default'
21
- : isDanger
22
- ? isPressed || isLoading
23
- ? 'bg-error-muted-pressed'
24
- : 'bg-transparent'
25
- : isPressed || isLoading
26
- ? 'bg-pressed'
27
- : 'bg-transparent'}
28
- border-[1.5px]
29
- ${isInverse && isDanger
30
- ? isPressed || isLoading
31
- ? 'border-background-default-pressed'
32
- : 'border-background-default'
33
- : isDanger
34
- ? isPressed || isLoading
35
- ? 'border-error-default-pressed'
36
- : 'border-error-default'
37
- : isInverse
15
+ const getContainerClassName = useCallback((pressed) => {
16
+ const baseClasses = `
17
+ border-[1.5px]
18
+ ${twClassName}
19
+ `;
20
+ let backgroundClass = '';
21
+ let borderClass = '';
22
+ if (isInverse && isDanger) {
23
+ backgroundClass =
24
+ pressed || isLoading ? 'bg-default-pressed' : 'bg-default';
25
+ borderClass =
26
+ pressed || isLoading
27
+ ? 'border-background-default-pressed'
28
+ : 'border-background-default';
29
+ }
30
+ else if (isDanger) {
31
+ backgroundClass =
32
+ pressed || isLoading ? 'bg-muted-pressed' : 'bg-muted';
33
+ borderClass = 'border-transparent';
34
+ }
35
+ else {
36
+ backgroundClass = isInverse
37
+ ? pressed || isLoading
38
+ ? 'bg-pressed'
39
+ : 'bg-transparent'
40
+ : pressed || isLoading
41
+ ? 'bg-muted-pressed'
42
+ : 'bg-muted';
43
+ borderClass = isInverse
38
44
  ? 'border-primary-inverse'
39
- : 'border-icon-default'}
40
- ${twClassName}
41
- `;
42
- const twTextClassNames = isDanger
43
- ? isPressed || isLoading
44
- ? 'text-error-default-pressed'
45
- : 'text-error-default'
46
- : isInverse
47
- ? 'text-primary-inverse'
48
- : 'text-default';
49
- const onPressInHandler = (event) => {
50
- setIsPressed(true);
51
- onPressIn?.(event);
52
- };
53
- const onPressOutHandler = (event) => {
54
- setIsPressed(false);
55
- onPressOut?.(event);
56
- };
45
+ : 'border-transparent';
46
+ }
47
+ return `${backgroundClass} ${borderClass} ${baseClasses}`;
48
+ }, [isInverse, isDanger, isLoading, twClassName]);
49
+ const getTextClassName = useCallback((pressed) => {
50
+ if (isDanger) {
51
+ return pressed || isLoading
52
+ ? 'text-error-default-pressed'
53
+ : 'text-error-default';
54
+ }
55
+ else if (isInverse) {
56
+ return 'text-primary-inverse';
57
+ }
58
+ else {
59
+ return 'text-default';
60
+ }
61
+ }, [isDanger, isInverse, isLoading]);
57
62
  return (<ButtonBase textProps={{
58
63
  variant: TextVariant.BodyMd,
59
64
  fontWeight: FontWeight.Medium,
60
65
  numberOfLines: 1,
61
66
  ellipsizeMode: 'clip',
62
67
  ...textProps,
63
- twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,
64
68
  }} spinnerProps={{
65
- color: twTextClassNames,
66
- loadingTextProps: {
67
- twClassName: twTextClassNames,
68
- },
69
69
  ...spinnerProps,
70
70
  }} startIconProps={{
71
71
  size: IconSize.Sm,
72
72
  ...startIconProps,
73
- twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,
74
73
  }} endIconProps={{
75
74
  size: IconSize.Sm,
76
75
  ...endIconProps,
77
- twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,
78
- }} isLoading={isLoading} onPressIn={onPressInHandler} onPressOut={onPressOutHandler} style={[tw `${twContainerClassNames}`, style]} {...props}>
76
+ }} isLoading={isLoading} twClassName={getContainerClassName} textClassName={getTextClassName} iconClassName={getTextClassName} style={style} {...props}>
79
77
  {children}
80
78
  </ButtonBase>);
81
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonSecondary.mjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonSecondary/ButtonSecondary.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,sDAAsD;AAC5E,OAAO,QAAO,EAAE,QAAQ,EAAE,cAAc;;AAGxC,OAAO,EAAE,UAAU,EAAE,sCAA4B;AAEjD,OAAO,EAAE,QAAQ,EAAE,gCAAsB;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gCAAsB;AAIxD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,UAAU,EACV,WAAW,GAAG,EAAE,EAChB,KAAK,EACL,GAAG,KAAK,EACa,EAAE,EAAE;IACzB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,qBAAqB,GAAG;MAE1B,SAAS,IAAI,QAAQ;QACnB,CAAC,CAAC,SAAS,IAAI,SAAS;YACtB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,YAAY;QAChB,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,SAAS,IAAI,SAAS;gBACtB,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,gBAAgB;YACpB,CAAC,CAAC,SAAS,IAAI,SAAS;gBACtB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,gBACV;;MAGE,SAAS,IAAI,QAAQ;QACnB,CAAC,CAAC,SAAS,IAAI,SAAS;YACtB,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,2BAA2B;QAC/B,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,SAAS,IAAI,SAAS;gBACtB,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,sBAAsB;YAC1B,CAAC,CAAC,SAAS;gBACT,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,qBACV;MACE,WAAW;GACd,CAAC;IAEF,MAAM,gBAAgB,GAAG,QAAQ;QAC/B,CAAC,CAAC,SAAS,IAAI,SAAS;YACtB,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,oBAAoB;QACxB,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,cAAc,CAAC;IAErB,MAAM,gBAAgB,GAAG,CAAC,KAA4B,EAAE,EAAE;QACxD,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAA4B,EAAE,EAAE;QACzD,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,UAAU,CACT,SAAS,CAAC,CAAC;YACT,OAAO,EAAE,WAAW,CAAC,MAAM;YAC3B,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,MAAM;YACrB,GAAG,SAAS;YACZ,WAAW,EAAE,GAAG,gBAAgB,IAAI,SAAS,EAAE,WAAW,IAAI,EAAE,EAAE;SACnE,CAAC,CACF,YAAY,CAAC,CAAC;YACZ,KAAK,EAAE,gBAA6B;YACpC,gBAAgB,EAAE;gBAChB,WAAW,EAAE,gBAAgB;aAC9B;YACD,GAAG,YAAY;SAChB,CAAC,CACF,cAAc,CAAC,CAAC;YACd,IAAI,EAAE,QAAQ,CAAC,EAAE;YACjB,GAAG,cAAc;YACjB,WAAW,EAAE,GAAG,gBAAgB,IAAI,cAAc,EAAE,WAAW,IAAI,EAAE,EAAE;SACxE,CAAC,CACF,YAAY,CAAC,CAAC;YACZ,IAAI,EAAE,QAAQ,CAAC,EAAE;YACjB,GAAG,YAAY;YACf,WAAW,EAAE,GAAG,gBAAgB,IAAI,YAAY,EAAE,WAAW,IAAI,EAAE,EAAE;SACtE,CAAC,CACF,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAC5B,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAC9B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA,GAAG,qBAAqB,EAAE,EAAE,KAAK,CAAC,CAAC,CAC7C,IAAI,KAAK,CAAC,CAEV;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,UAAU,CAAC,CACd,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useState } from 'react';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonSecondaryProps } from './ButtonSecondary.types';\n\nexport const ButtonSecondary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n onPressIn,\n onPressOut,\n twClassName = '',\n style,\n ...props\n}: ButtonSecondaryProps) => {\n const [isPressed, setIsPressed] = useState(false);\n const tw = useTailwind();\n const twContainerClassNames = `\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'bg-default-pressed'\n : 'bg-default'\n : isDanger\n ? isPressed || isLoading\n ? 'bg-error-muted-pressed'\n : 'bg-transparent'\n : isPressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n }\n border-[1.5px]\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default'\n : isDanger\n ? isPressed || isLoading\n ? 'border-error-default-pressed'\n : 'border-error-default'\n : isInverse\n ? 'border-primary-inverse'\n : 'border-icon-default'\n }\n ${twClassName}\n `;\n\n const twTextClassNames = isDanger\n ? isPressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default'\n : isInverse\n ? 'text-primary-inverse'\n : 'text-default';\n\n const onPressInHandler = (event: GestureResponderEvent) => {\n setIsPressed(true);\n onPressIn?.(event);\n };\n\n const onPressOutHandler = (event: GestureResponderEvent) => {\n setIsPressed(false);\n onPressOut?.(event);\n };\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,\n }}\n spinnerProps={{\n color: twTextClassNames as IconColor,\n loadingTextProps: {\n twClassName: twTextClassNames,\n },\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,\n }}\n isLoading={isLoading}\n onPressIn={onPressInHandler}\n onPressOut={onPressOutHandler}\n style={[tw`${twContainerClassNames}`, style]}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}
1
+ {"version":3,"file":"ButtonSecondary.mjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonSecondary/ButtonSecondary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonSecondaryProps } from './ButtonSecondary.types';\n\nexport const ButtonSecondary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n twClassName = '',\n style,\n ...props\n}: ButtonSecondaryProps) => {\n const tw = useTailwind();\n\n const getContainerClassName = useCallback(\n (pressed: boolean): string => {\n const baseClasses = `\n border-[1.5px]\n ${twClassName}\n `;\n\n let backgroundClass = '';\n let borderClass = '';\n\n if (isInverse && isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-default-pressed' : 'bg-default';\n borderClass =\n pressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default';\n } else if (isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-muted-pressed' : 'bg-muted';\n borderClass = 'border-transparent';\n } else {\n backgroundClass = isInverse\n ? pressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n : pressed || isLoading\n ? 'bg-muted-pressed'\n : 'bg-muted';\n borderClass = isInverse\n ? 'border-primary-inverse'\n : 'border-transparent';\n }\n\n return `${backgroundClass} ${borderClass} ${baseClasses}`;\n },\n [isInverse, isDanger, isLoading, twClassName],\n );\n\n const getTextClassName = useCallback(\n (pressed: boolean): string => {\n if (isDanger) {\n return pressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default';\n } else if (isInverse) {\n return 'text-primary-inverse';\n } else {\n return 'text-default';\n }\n },\n [isDanger, isInverse, isLoading],\n );\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n }}\n spinnerProps={{\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n }}\n isLoading={isLoading}\n twClassName={getContainerClassName}\n textClassName={getTextClassName}\n iconClassName={getTextClassName}\n style={style}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}
@@ -29,79 +29,76 @@ const react_1 = __importStar(require("react"));
29
29
  const ButtonBase_1 = require("../../../ButtonBase/index.cjs");
30
30
  const Icon_1 = require("../../../Icon/index.cjs");
31
31
  const Text_1 = require("../../../Text/index.cjs");
32
- const ButtonTertiary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, onPressIn, onPressOut, twClassName = '', style, ...props }) => {
33
- const [isPressed, setIsPressed] = (0, react_1.useState)(false);
32
+ const ButtonTertiary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, twClassName = '', style, ...props }) => {
34
33
  const tw = (0, design_system_twrnc_preset_1.useTailwind)();
35
- const twContainerClassNames = `
36
- ${isInverse && isDanger
37
- ? isPressed || isLoading
38
- ? 'bg-default-pressed'
39
- : 'bg-default'
40
- : isDanger
41
- ? isPressed || isLoading
42
- ? 'bg-error-muted-pressed'
43
- : 'bg-transparent'
44
- : isInverse
45
- ? isPressed || isLoading
46
- ? 'bg-pressed'
47
- : 'bg-transparent'
48
- : isPressed || isLoading
49
- ? 'bg-pressed'
50
- : 'bg-transparent'}
51
- ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}
52
- ${isInverse && isDanger
53
- ? isPressed || isLoading
54
- ? 'border-background-default-pressed'
55
- : 'border-background-default'
56
- : isDanger
57
- ? isPressed || isLoading
58
- ? 'border-error-muted-pressed'
59
- : 'border-transparent'
60
- : isInverse
61
- ? 'border-primary-inverse'
62
- : isPressed || isLoading
34
+ const getContainerClassName = (0, react_1.useCallback)((pressed) => {
35
+ const baseClasses = `
36
+ ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}
37
+ ${twClassName}
38
+ `;
39
+ let backgroundClass = '';
40
+ let borderClass = '';
41
+ if (isInverse && isDanger) {
42
+ backgroundClass =
43
+ pressed || isLoading ? 'bg-default-pressed' : 'bg-default';
44
+ borderClass =
45
+ pressed || isLoading
46
+ ? 'border-background-default-pressed'
47
+ : 'border-background-default';
48
+ }
49
+ else if (isDanger) {
50
+ backgroundClass =
51
+ pressed || isLoading ? 'bg-error-muted-pressed' : 'bg-transparent';
52
+ borderClass =
53
+ pressed || isLoading
54
+ ? 'border-error-muted-pressed'
55
+ : 'border-transparent';
56
+ }
57
+ else if (isInverse) {
58
+ backgroundClass =
59
+ pressed || isLoading ? 'bg-pressed' : 'bg-transparent';
60
+ borderClass = 'border-primary-inverse';
61
+ }
62
+ else {
63
+ backgroundClass =
64
+ pressed || isLoading ? 'bg-pressed' : 'bg-transparent';
65
+ borderClass =
66
+ pressed || isLoading
63
67
  ? 'border-background-pressed'
64
- : 'border-transparent'}
65
- `;
66
- const twTextClassNames = isDanger
67
- ? isPressed || isLoading
68
- ? 'text-error-default-pressed'
69
- : 'text-error-default'
70
- : isInverse
71
- ? 'text-primary-inverse'
72
- : isPressed || isLoading
68
+ : 'border-transparent';
69
+ }
70
+ return `${backgroundClass} ${borderClass} ${baseClasses}`;
71
+ }, [isInverse, isDanger, isLoading, twClassName]);
72
+ const getTextClassName = (0, react_1.useCallback)((pressed) => {
73
+ if (isDanger) {
74
+ return pressed || isLoading
75
+ ? 'text-error-default-pressed'
76
+ : 'text-error-default';
77
+ }
78
+ else if (isInverse) {
79
+ return 'text-primary-inverse';
80
+ }
81
+ else {
82
+ return pressed || isLoading
73
83
  ? 'text-primary-default-pressed'
74
84
  : 'text-primary-default';
75
- const onPressInHandler = (event) => {
76
- setIsPressed(true);
77
- onPressIn?.(event);
78
- };
79
- const onPressOutHandler = (event) => {
80
- setIsPressed(false);
81
- onPressOut?.(event);
82
- };
85
+ }
86
+ }, [isDanger, isInverse, isLoading]);
83
87
  return (<ButtonBase_1.ButtonBase textProps={{
84
88
  variant: Text_1.TextVariant.BodyMd,
85
89
  fontWeight: Text_1.FontWeight.Medium,
86
90
  numberOfLines: 1,
87
91
  ellipsizeMode: 'clip',
88
92
  ...textProps,
89
- twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,
90
93
  }} spinnerProps={{
91
- color: twTextClassNames,
92
- loadingTextProps: {
93
- twClassName: twTextClassNames,
94
- },
95
94
  ...spinnerProps,
96
95
  }} startIconProps={{
97
96
  size: Icon_1.IconSize.Sm,
98
97
  ...startIconProps,
99
- twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,
100
98
  }} endIconProps={{
101
99
  size: Icon_1.IconSize.Sm,
102
100
  ...endIconProps,
103
- twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,
104
- }} isLoading={isLoading} onPressIn={onPressInHandler} onPressOut={onPressOutHandler} style={[tw `${twContainerClassNames}`, style]} {...props}>
101
+ }} isLoading={isLoading} twClassName={getContainerClassName} textClassName={getTextClassName} iconClassName={getTextClassName} style={style} {...props}>
105
102
  {children}
106
103
  </ButtonBase_1.ButtonBase>);
107
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonTertiary.cjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useState } from 'react';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonTertiaryProps } from './ButtonTertiary.types';\n\nexport const ButtonTertiary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n onPressIn,\n onPressOut,\n twClassName = '',\n style,\n ...props\n}: ButtonTertiaryProps) => {\n const [isPressed, setIsPressed] = useState(false);\n const tw = useTailwind();\n const twContainerClassNames = `\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'bg-default-pressed'\n : 'bg-default'\n : isDanger\n ? isPressed || isLoading\n ? 'bg-error-muted-pressed'\n : 'bg-transparent'\n : isInverse\n ? isPressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n : isPressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n }\n ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default'\n : isDanger\n ? isPressed || isLoading\n ? 'border-error-muted-pressed'\n : 'border-transparent'\n : isInverse\n ? 'border-primary-inverse'\n : isPressed || isLoading\n ? 'border-background-pressed'\n : 'border-transparent'\n }\n `;\n\n const twTextClassNames = isDanger\n ? isPressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default'\n : isInverse\n ? 'text-primary-inverse'\n : isPressed || isLoading\n ? 'text-primary-default-pressed'\n : 'text-primary-default';\n\n const onPressInHandler = (event: GestureResponderEvent) => {\n setIsPressed(true);\n onPressIn?.(event);\n };\n\n const onPressOutHandler = (event: GestureResponderEvent) => {\n setIsPressed(false);\n onPressOut?.(event);\n };\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,\n }}\n spinnerProps={{\n color: twTextClassNames as IconColor,\n loadingTextProps: {\n twClassName: twTextClassNames,\n },\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,\n }}\n isLoading={isLoading}\n onPressIn={onPressInHandler}\n onPressOut={onPressOutHandler}\n style={[tw`${twContainerClassNames}`, style]}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}
1
+ {"version":3,"file":"ButtonTertiary.cjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonTertiaryProps } from './ButtonTertiary.types';\n\nexport const ButtonTertiary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n twClassName = '',\n style,\n ...props\n}: ButtonTertiaryProps) => {\n const tw = useTailwind();\n\n const getContainerClassName = useCallback(\n (pressed: boolean): string => {\n const baseClasses = `\n ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}\n ${twClassName}\n `;\n\n let backgroundClass = '';\n let borderClass = '';\n\n if (isInverse && isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-default-pressed' : 'bg-default';\n borderClass =\n pressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default';\n } else if (isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-error-muted-pressed' : 'bg-transparent';\n borderClass =\n pressed || isLoading\n ? 'border-error-muted-pressed'\n : 'border-transparent';\n } else if (isInverse) {\n backgroundClass =\n pressed || isLoading ? 'bg-pressed' : 'bg-transparent';\n borderClass = 'border-primary-inverse';\n } else {\n backgroundClass =\n pressed || isLoading ? 'bg-pressed' : 'bg-transparent';\n borderClass =\n pressed || isLoading\n ? 'border-background-pressed'\n : 'border-transparent';\n }\n\n return `${backgroundClass} ${borderClass} ${baseClasses}`;\n },\n [isInverse, isDanger, isLoading, twClassName],\n );\n\n const getTextClassName = useCallback(\n (pressed: boolean): string => {\n if (isDanger) {\n return pressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default';\n } else if (isInverse) {\n return 'text-primary-inverse';\n } else {\n return pressed || isLoading\n ? 'text-primary-default-pressed'\n : 'text-primary-default';\n }\n },\n [isDanger, isInverse, isLoading],\n );\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n }}\n spinnerProps={{\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n }}\n isLoading={isLoading}\n twClassName={getContainerClassName}\n textClassName={getTextClassName}\n iconClassName={getTextClassName}\n style={style}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import type { ButtonTertiaryProps } from "./ButtonTertiary.types.cjs";
3
- export declare const ButtonTertiary: ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger, isInverse, isLoading, onPressIn, onPressOut, twClassName, style, ...props }: ButtonTertiaryProps) => React.JSX.Element;
3
+ export declare const ButtonTertiary: ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger, isInverse, isLoading, twClassName, style, ...props }: ButtonTertiaryProps) => React.JSX.Element;
4
4
  //# sourceMappingURL=ButtonTertiary.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonTertiary.d.cts","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,cAAc;AAQxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAA+B;AAElE,eAAO,MAAM,cAAc,6JAcxB,mBAAmB,sBA+FrB,CAAC"}
1
+ {"version":3,"file":"ButtonTertiary.d.cts","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,cAAc;AAO3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAA+B;AAElE,eAAO,MAAM,cAAc,sIAYxB,mBAAmB,sBA4FrB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import type { ButtonTertiaryProps } from "./ButtonTertiary.types.mjs";
3
- export declare const ButtonTertiary: ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger, isInverse, isLoading, onPressIn, onPressOut, twClassName, style, ...props }: ButtonTertiaryProps) => React.JSX.Element;
3
+ export declare const ButtonTertiary: ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger, isInverse, isLoading, twClassName, style, ...props }: ButtonTertiaryProps) => React.JSX.Element;
4
4
  //# sourceMappingURL=ButtonTertiary.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonTertiary.d.mts","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,cAAc;AAQxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAA+B;AAElE,eAAO,MAAM,cAAc,6JAcxB,mBAAmB,sBA+FrB,CAAC"}
1
+ {"version":3,"file":"ButtonTertiary.d.mts","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,cAAc;AAO3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAA+B;AAElE,eAAO,MAAM,cAAc,sIAYxB,mBAAmB,sBA4FrB,CAAC"}
@@ -5,84 +5,81 @@ function $importDefault(module) {
5
5
  return module;
6
6
  }
7
7
  import { useTailwind } from "@metamask-previews/design-system-twrnc-preset";
8
- import $React, { useState } from "react";
8
+ import $React, { useCallback } from "react";
9
9
  const React = $importDefault($React);
10
10
  import { ButtonBase } from "../../../ButtonBase/index.mjs";
11
11
  import { IconSize } from "../../../Icon/index.mjs";
12
12
  import { TextVariant, FontWeight } from "../../../Text/index.mjs";
13
- export const ButtonTertiary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, onPressIn, onPressOut, twClassName = '', style, ...props }) => {
14
- const [isPressed, setIsPressed] = useState(false);
13
+ export const ButtonTertiary = ({ children, textProps, spinnerProps, startIconProps, endIconProps, isDanger = false, isInverse = false, isLoading = false, twClassName = '', style, ...props }) => {
15
14
  const tw = useTailwind();
16
- const twContainerClassNames = `
17
- ${isInverse && isDanger
18
- ? isPressed || isLoading
19
- ? 'bg-default-pressed'
20
- : 'bg-default'
21
- : isDanger
22
- ? isPressed || isLoading
23
- ? 'bg-error-muted-pressed'
24
- : 'bg-transparent'
25
- : isInverse
26
- ? isPressed || isLoading
27
- ? 'bg-pressed'
28
- : 'bg-transparent'
29
- : isPressed || isLoading
30
- ? 'bg-pressed'
31
- : 'bg-transparent'}
32
- ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}
33
- ${isInverse && isDanger
34
- ? isPressed || isLoading
35
- ? 'border-background-default-pressed'
36
- : 'border-background-default'
37
- : isDanger
38
- ? isPressed || isLoading
39
- ? 'border-error-muted-pressed'
40
- : 'border-transparent'
41
- : isInverse
42
- ? 'border-primary-inverse'
43
- : isPressed || isLoading
15
+ const getContainerClassName = useCallback((pressed) => {
16
+ const baseClasses = `
17
+ ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}
18
+ ${twClassName}
19
+ `;
20
+ let backgroundClass = '';
21
+ let borderClass = '';
22
+ if (isInverse && isDanger) {
23
+ backgroundClass =
24
+ pressed || isLoading ? 'bg-default-pressed' : 'bg-default';
25
+ borderClass =
26
+ pressed || isLoading
27
+ ? 'border-background-default-pressed'
28
+ : 'border-background-default';
29
+ }
30
+ else if (isDanger) {
31
+ backgroundClass =
32
+ pressed || isLoading ? 'bg-error-muted-pressed' : 'bg-transparent';
33
+ borderClass =
34
+ pressed || isLoading
35
+ ? 'border-error-muted-pressed'
36
+ : 'border-transparent';
37
+ }
38
+ else if (isInverse) {
39
+ backgroundClass =
40
+ pressed || isLoading ? 'bg-pressed' : 'bg-transparent';
41
+ borderClass = 'border-primary-inverse';
42
+ }
43
+ else {
44
+ backgroundClass =
45
+ pressed || isLoading ? 'bg-pressed' : 'bg-transparent';
46
+ borderClass =
47
+ pressed || isLoading
44
48
  ? 'border-background-pressed'
45
- : 'border-transparent'}
46
- `;
47
- const twTextClassNames = isDanger
48
- ? isPressed || isLoading
49
- ? 'text-error-default-pressed'
50
- : 'text-error-default'
51
- : isInverse
52
- ? 'text-primary-inverse'
53
- : isPressed || isLoading
49
+ : 'border-transparent';
50
+ }
51
+ return `${backgroundClass} ${borderClass} ${baseClasses}`;
52
+ }, [isInverse, isDanger, isLoading, twClassName]);
53
+ const getTextClassName = useCallback((pressed) => {
54
+ if (isDanger) {
55
+ return pressed || isLoading
56
+ ? 'text-error-default-pressed'
57
+ : 'text-error-default';
58
+ }
59
+ else if (isInverse) {
60
+ return 'text-primary-inverse';
61
+ }
62
+ else {
63
+ return pressed || isLoading
54
64
  ? 'text-primary-default-pressed'
55
65
  : 'text-primary-default';
56
- const onPressInHandler = (event) => {
57
- setIsPressed(true);
58
- onPressIn?.(event);
59
- };
60
- const onPressOutHandler = (event) => {
61
- setIsPressed(false);
62
- onPressOut?.(event);
63
- };
66
+ }
67
+ }, [isDanger, isInverse, isLoading]);
64
68
  return (<ButtonBase textProps={{
65
69
  variant: TextVariant.BodyMd,
66
70
  fontWeight: FontWeight.Medium,
67
71
  numberOfLines: 1,
68
72
  ellipsizeMode: 'clip',
69
73
  ...textProps,
70
- twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,
71
74
  }} spinnerProps={{
72
- color: twTextClassNames,
73
- loadingTextProps: {
74
- twClassName: twTextClassNames,
75
- },
76
75
  ...spinnerProps,
77
76
  }} startIconProps={{
78
77
  size: IconSize.Sm,
79
78
  ...startIconProps,
80
- twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,
81
79
  }} endIconProps={{
82
80
  size: IconSize.Sm,
83
81
  ...endIconProps,
84
- twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,
85
- }} isLoading={isLoading} onPressIn={onPressInHandler} onPressOut={onPressOutHandler} style={[tw `${twContainerClassNames}`, style]} {...props}>
82
+ }} isLoading={isLoading} twClassName={getContainerClassName} textClassName={getTextClassName} iconClassName={getTextClassName} style={style} {...props}>
86
83
  {children}
87
84
  </ButtonBase>);
88
85
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonTertiary.mjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useState } from 'react';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonTertiaryProps } from './ButtonTertiary.types';\n\nexport const ButtonTertiary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n onPressIn,\n onPressOut,\n twClassName = '',\n style,\n ...props\n}: ButtonTertiaryProps) => {\n const [isPressed, setIsPressed] = useState(false);\n const tw = useTailwind();\n const twContainerClassNames = `\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'bg-default-pressed'\n : 'bg-default'\n : isDanger\n ? isPressed || isLoading\n ? 'bg-error-muted-pressed'\n : 'bg-transparent'\n : isInverse\n ? isPressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n : isPressed || isLoading\n ? 'bg-pressed'\n : 'bg-transparent'\n }\n ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}\n ${\n isInverse && isDanger\n ? isPressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default'\n : isDanger\n ? isPressed || isLoading\n ? 'border-error-muted-pressed'\n : 'border-transparent'\n : isInverse\n ? 'border-primary-inverse'\n : isPressed || isLoading\n ? 'border-background-pressed'\n : 'border-transparent'\n }\n `;\n\n const twTextClassNames = isDanger\n ? isPressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default'\n : isInverse\n ? 'text-primary-inverse'\n : isPressed || isLoading\n ? 'text-primary-default-pressed'\n : 'text-primary-default';\n\n const onPressInHandler = (event: GestureResponderEvent) => {\n setIsPressed(true);\n onPressIn?.(event);\n };\n\n const onPressOutHandler = (event: GestureResponderEvent) => {\n setIsPressed(false);\n onPressOut?.(event);\n };\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n twClassName: `${twTextClassNames} ${textProps?.twClassName ?? ''}`,\n }}\n spinnerProps={{\n color: twTextClassNames as IconColor,\n loadingTextProps: {\n twClassName: twTextClassNames,\n },\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n twClassName: `${twTextClassNames} ${startIconProps?.twClassName ?? ''}`,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n twClassName: `${twTextClassNames} ${endIconProps?.twClassName ?? ''}`,\n }}\n isLoading={isLoading}\n onPressIn={onPressInHandler}\n onPressOut={onPressOutHandler}\n style={[tw`${twContainerClassNames}`, style]}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}
1
+ {"version":3,"file":"ButtonTertiary.mjs","sourceRoot":"","sources":["../../../../../src/components/Button/variants/ButtonTertiary/ButtonTertiary.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useTailwind } from '@metamask-previews/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\n\nimport { ButtonBase } from '../../../ButtonBase';\nimport type { IconColor } from '../../../Icon';\nimport { IconSize } from '../../../Icon';\nimport { TextVariant, FontWeight } from '../../../Text';\n\nimport type { ButtonTertiaryProps } from './ButtonTertiary.types';\n\nexport const ButtonTertiary = ({\n children,\n textProps,\n spinnerProps,\n startIconProps,\n endIconProps,\n isDanger = false,\n isInverse = false,\n isLoading = false,\n twClassName = '',\n style,\n ...props\n}: ButtonTertiaryProps) => {\n const tw = useTailwind();\n\n const getContainerClassName = useCallback(\n (pressed: boolean): string => {\n const baseClasses = `\n ${isInverse && !isDanger ? 'border-[1.5px]' : 'border-0'}\n ${twClassName}\n `;\n\n let backgroundClass = '';\n let borderClass = '';\n\n if (isInverse && isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-default-pressed' : 'bg-default';\n borderClass =\n pressed || isLoading\n ? 'border-background-default-pressed'\n : 'border-background-default';\n } else if (isDanger) {\n backgroundClass =\n pressed || isLoading ? 'bg-error-muted-pressed' : 'bg-transparent';\n borderClass =\n pressed || isLoading\n ? 'border-error-muted-pressed'\n : 'border-transparent';\n } else if (isInverse) {\n backgroundClass =\n pressed || isLoading ? 'bg-pressed' : 'bg-transparent';\n borderClass = 'border-primary-inverse';\n } else {\n backgroundClass =\n pressed || isLoading ? 'bg-pressed' : 'bg-transparent';\n borderClass =\n pressed || isLoading\n ? 'border-background-pressed'\n : 'border-transparent';\n }\n\n return `${backgroundClass} ${borderClass} ${baseClasses}`;\n },\n [isInverse, isDanger, isLoading, twClassName],\n );\n\n const getTextClassName = useCallback(\n (pressed: boolean): string => {\n if (isDanger) {\n return pressed || isLoading\n ? 'text-error-default-pressed'\n : 'text-error-default';\n } else if (isInverse) {\n return 'text-primary-inverse';\n } else {\n return pressed || isLoading\n ? 'text-primary-default-pressed'\n : 'text-primary-default';\n }\n },\n [isDanger, isInverse, isLoading],\n );\n\n return (\n <ButtonBase\n textProps={{\n variant: TextVariant.BodyMd,\n fontWeight: FontWeight.Medium,\n numberOfLines: 1,\n ellipsizeMode: 'clip',\n ...textProps,\n }}\n spinnerProps={{\n ...spinnerProps,\n }}\n startIconProps={{\n size: IconSize.Sm,\n ...startIconProps,\n }}\n endIconProps={{\n size: IconSize.Sm,\n ...endIconProps,\n }}\n isLoading={isLoading}\n twClassName={getContainerClassName}\n textClassName={getTextClassName}\n iconClassName={getTextClassName}\n style={style}\n {...props}\n >\n {children}\n </ButtonBase>\n );\n};\n"]}