@transferwise/components 0.0.0-experimental-3d57e31 → 0.0.0-experimental-1f719c5

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 (134) hide show
  1. package/build/avatarLayout/AvatarLayout.js +4 -10
  2. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  3. package/build/avatarLayout/AvatarLayout.mjs +4 -10
  4. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  5. package/build/button/Button.js +79 -78
  6. package/build/button/Button.js.map +1 -1
  7. package/build/button/Button.mjs +80 -79
  8. package/build/button/Button.mjs.map +1 -1
  9. package/build/criticalBanner/CriticalCommsBanner.js +2 -2
  10. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  11. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  12. package/build/header/Header.js +2 -2
  13. package/build/header/Header.js.map +1 -1
  14. package/build/header/Header.mjs +1 -1
  15. package/build/index.js +4 -2
  16. package/build/index.js.map +1 -1
  17. package/build/index.mjs +2 -1
  18. package/build/index.mjs.map +1 -1
  19. package/build/link/Link.js +3 -8
  20. package/build/link/Link.js.map +1 -1
  21. package/build/link/Link.mjs +3 -8
  22. package/build/link/Link.mjs.map +1 -1
  23. package/build/main.css +2 -224
  24. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js +3 -1
  25. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js.map +1 -1
  26. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs +3 -1
  27. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs.map +1 -1
  28. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js +4 -1
  29. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js.map +1 -1
  30. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs +4 -1
  31. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs.map +1 -1
  32. package/build/select/Select.js +2 -2
  33. package/build/select/Select.js.map +1 -1
  34. package/build/select/Select.mjs +1 -1
  35. package/build/styles/avatarLayout/AvatarLayout.css +2 -12
  36. package/build/styles/button/Button.css +15 -204
  37. package/build/styles/main.css +2 -224
  38. package/build/table/Table.js +166 -0
  39. package/build/table/Table.js.map +1 -0
  40. package/build/table/Table.messages.js +24 -0
  41. package/build/table/Table.messages.js.map +1 -0
  42. package/build/table/Table.messages.mjs +22 -0
  43. package/build/table/Table.messages.mjs.map +1 -0
  44. package/build/table/Table.mjs +164 -0
  45. package/build/table/Table.mjs.map +1 -0
  46. package/build/table/TableCell.js +86 -0
  47. package/build/table/TableCell.js.map +1 -0
  48. package/build/table/TableCell.mjs +84 -0
  49. package/build/table/TableCell.mjs.map +1 -0
  50. package/build/table/TableHeader.js +57 -0
  51. package/build/table/TableHeader.js.map +1 -0
  52. package/build/table/TableHeader.mjs +55 -0
  53. package/build/table/TableHeader.mjs.map +1 -0
  54. package/build/table/TableRow.js +85 -0
  55. package/build/table/TableRow.js.map +1 -0
  56. package/build/table/TableRow.mjs +83 -0
  57. package/build/table/TableRow.mjs.map +1 -0
  58. package/build/table/TableStatusText.js +54 -0
  59. package/build/table/TableStatusText.js.map +1 -0
  60. package/build/table/TableStatusText.mjs +52 -0
  61. package/build/table/TableStatusText.mjs.map +1 -0
  62. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  63. package/build/types/button/Button.d.ts +23 -2
  64. package/build/types/button/Button.d.ts.map +1 -1
  65. package/build/types/button/index.d.ts +2 -2
  66. package/build/types/button/index.d.ts.map +1 -1
  67. package/build/types/index.d.ts +2 -0
  68. package/build/types/index.d.ts.map +1 -1
  69. package/build/types/link/Link.d.ts +2 -2
  70. package/build/types/link/Link.d.ts.map +1 -1
  71. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.d.ts.map +1 -1
  72. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts +2 -6
  73. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts.map +1 -1
  74. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.d.ts.map +1 -1
  75. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.types.d.ts +0 -1
  76. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.types.d.ts.map +1 -1
  77. package/build/upload/steps/completeStep/completeStep.js +2 -2
  78. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  79. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  80. package/build/upload/steps/processingStep/processingStep.js +2 -2
  81. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  82. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  83. package/build/uploadInput/UploadInput.js +3 -3
  84. package/build/uploadInput/UploadInput.js.map +1 -1
  85. package/build/uploadInput/UploadInput.mjs +1 -1
  86. package/package.json +5 -5
  87. package/src/avatarLayout/AvatarLayout.css +2 -12
  88. package/src/avatarLayout/AvatarLayout.less +2 -19
  89. package/src/avatarLayout/AvatarLayout.tsx +3 -10
  90. package/src/button/Button.css +15 -204
  91. package/src/button/Button.less +14 -211
  92. package/src/button/Button.spec.tsx +227 -75
  93. package/src/button/Button.story.tsx +138 -612
  94. package/src/button/Button.tsx +132 -88
  95. package/src/button/__snapshots__/Button.spec.tsx.snap +309 -0
  96. package/src/button/index.ts +3 -2
  97. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +1 -1
  98. package/src/index.ts +12 -0
  99. package/src/inputs/SelectInput.story.tsx +1 -1
  100. package/src/link/Link.tsx +6 -15
  101. package/src/main.css +2 -224
  102. package/src/main.less +0 -1
  103. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.tsx +7 -1
  104. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.ts +2 -7
  105. package/src/primitives/PrimitiveAnchor/test/PrimitiveAnchor.spec.tsx +3 -1
  106. package/src/primitives/PrimitiveButton/src/PrimitiveButton.tsx +8 -1
  107. package/src/primitives/PrimitiveButton/src/PrimitiveButton.types.ts +0 -2
  108. package/src/primitives/PrimitiveButton/test/PrimitiveButton.spec.tsx +5 -2
  109. package/build/button/Button.resolver.js +0 -75
  110. package/build/button/Button.resolver.js.map +0 -1
  111. package/build/button/Button.resolver.mjs +0 -73
  112. package/build/button/Button.resolver.mjs.map +0 -1
  113. package/build/button/LegacyButton.js +0 -114
  114. package/build/button/LegacyButton.js.map +0 -1
  115. package/build/button/LegacyButton.mjs +0 -112
  116. package/build/button/LegacyButton.mjs.map +0 -1
  117. package/build/styles/button/Button.vars.css +0 -39
  118. package/build/styles/button/LegacyButton.css +0 -23
  119. package/build/types/button/Button.resolver.d.ts +0 -33
  120. package/build/types/button/Button.resolver.d.ts.map +0 -1
  121. package/build/types/button/Button.types.d.ts +0 -54
  122. package/build/types/button/Button.types.d.ts.map +0 -1
  123. package/build/types/button/LegacyButton.d.ts +0 -30
  124. package/build/types/button/LegacyButton.d.ts.map +0 -1
  125. package/src/button/Button.resolver.tsx +0 -75
  126. package/src/button/Button.tests.story.tsx +0 -27
  127. package/src/button/Button.types.ts +0 -68
  128. package/src/button/Button.vars.css +0 -39
  129. package/src/button/Button.vars.less +0 -50
  130. package/src/button/LegacyButton.css +0 -23
  131. package/src/button/LegacyButton.less +0 -24
  132. package/src/button/LegacyButton.spec.tsx +0 -146
  133. package/src/button/LegacyButton.story.tsx +0 -225
  134. package/src/button/LegacyButton.tsx +0 -161
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyButton.js","sources":["../../src/button/LegacyButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ElementType, forwardRef, MouseEvent } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n Size,\n ControlType,\n Priority,\n ControlTypeAccent,\n ControlTypeNegative,\n ControlTypePositive,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n SizeExtraSmall,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport ProcessIndicator from '../processIndicator';\n\nimport messages from '../i18n/commonMessages/Button.messages';\nimport { typeClassMap, priorityClassMap } from './classMap';\nimport { establishNewPriority, establishNewType, logDeprecationNotices } from './legacyUtils';\n\n/** @deprecated */\ntype DeprecatedTypes = 'primary' | 'pay' | 'secondary' | 'danger' | 'link';\n\n/** @deprecated */\ntype DeprecatedSizes = SizeExtraSmall;\n\ntype CommonProps = {\n v2?: false;\n block?: boolean;\n disabled?: boolean;\n loading?: boolean;\n type?: ControlTypeAccent | ControlTypeNegative | ControlTypePositive | DeprecatedTypes | null;\n priority?: PriorityPrimary | PrioritySecondary | PriorityTertiary | null;\n size?: SizeSmall | SizeMedium | SizeLarge | DeprecatedSizes;\n htmlType?: 'submit' | 'reset' | 'button';\n};\n\ntype ButtonProps = CommonProps &\n Omit<React.ComponentPropsWithRef<'button'>, 'type'> & {\n as?: 'button';\n };\n\ntype AnchorProps = CommonProps &\n Omit<React.ComponentPropsWithRef<'a'>, 'type'> & {\n as?: 'a';\n href?: string;\n };\n\nexport type LegacyButtonProps = ButtonProps | AnchorProps;\n\nexport type ButtonReferenceType = HTMLButtonElement | HTMLAnchorElement;\n\n/**\n * @deprecated make sure you use new Button component via `<Button v2 .. />` and new props\n */\nconst LegacyButton = forwardRef<ButtonReferenceType, LegacyButtonProps>(\n (\n {\n as: component = 'button',\n block = false,\n children,\n className,\n disabled,\n loading = false,\n priority = Priority.PRIMARY,\n size = Size.MEDIUM,\n type = ControlType.ACCENT,\n onClick,\n ...rest\n }: LegacyButtonProps,\n ref,\n ) => {\n const intl = useIntl();\n\n logDeprecationNotices({ size, type });\n\n const newType = establishNewType(type);\n const newPriority = establishNewPriority(priority, type);\n\n const classes = clsx(\n `btn btn-${size}`,\n `np-btn np-btn-${size}`,\n {\n 'btn-loading': loading,\n 'btn-block np-btn-block': block,\n disabled,\n },\n // @ts-expect-error fix when refactor `typeClassMap` to TypeScript\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n typeClassMap[newType],\n // @ts-expect-error fix when refactor `typeClassMap` to TypeScript\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n priorityClassMap[newPriority],\n className,\n );\n\n function processIndicatorSize() {\n return ['sm', 'xs'].includes(size) ? 'xxs' : 'xs';\n }\n\n const Element = (component as ElementType) ?? 'button';\n let props;\n\n if (Element === 'button') {\n const { htmlType = 'button', ...restProps } = rest as ButtonProps;\n props = {\n ...restProps,\n disabled,\n 'aria-disabled': loading,\n type: htmlType,\n };\n } else {\n props = {\n ...rest,\n 'aria-disabled': loading,\n } as AnchorProps;\n }\n\n /**\n * Ensures that the button cannot be activated in loading or disabled mode,\n * when `aria-disabled` might be used over the `disabled` HTML attribute\n */\n const handleClick =\n (handler: LegacyButtonProps['onClick']) =>\n (event: MouseEvent<HTMLButtonElement> & MouseEvent<HTMLAnchorElement>) => {\n if (disabled || loading) {\n event.preventDefault();\n } else if (typeof handler === 'function') {\n handler(event);\n }\n };\n\n return (\n <Element\n ref={ref as React.Ref<ButtonReferenceType>}\n className={classes}\n onClick={handleClick(onClick)}\n {...props}\n aria-live={loading ? 'polite' : 'off'}\n aria-busy={loading}\n aria-label={loading ? intl.formatMessage(messages.loadingAriaLabel) : rest['aria-label']}\n >\n {children}\n {loading && (\n <ProcessIndicator\n size={processIndicatorSize()}\n className=\"btn-loader\"\n data-testid=\"ButtonProgressIndicator\"\n />\n )}\n </Element>\n );\n },\n);\n\nexport default LegacyButton;\n"],"names":["LegacyButton","forwardRef","as","component","block","children","className","disabled","loading","priority","Priority","PRIMARY","size","Size","MEDIUM","type","ControlType","ACCENT","onClick","rest","ref","intl","useIntl","logDeprecationNotices","newType","establishNewType","newPriority","establishNewPriority","classes","clsx","typeClassMap","priorityClassMap","processIndicatorSize","includes","Element","props","htmlType","restProps","handleClick","handler","event","preventDefault","_jsxs","formatMessage","messages","loadingAriaLabel","_jsx","ProcessIndicator"],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- import { clsx } from 'clsx';
2
- import { forwardRef } from 'react';
3
- import { useIntl } from 'react-intl';
4
- import '../common/theme.mjs';
5
- import '../common/direction.mjs';
6
- import { Priority, ControlType } from '../common/propsValues/control.mjs';
7
- import '../common/propsValues/breakpoint.mjs';
8
- import { Size } from '../common/propsValues/size.mjs';
9
- import '../common/propsValues/typography.mjs';
10
- import '../common/propsValues/width.mjs';
11
- import '../common/propsValues/type.mjs';
12
- import '../common/propsValues/dateMode.mjs';
13
- import '../common/propsValues/monthFormat.mjs';
14
- import '../common/propsValues/position.mjs';
15
- import '../common/propsValues/layouts.mjs';
16
- import '../common/propsValues/status.mjs';
17
- import '../common/propsValues/sentiment.mjs';
18
- import '../common/propsValues/profileType.mjs';
19
- import '../common/propsValues/variant.mjs';
20
- import '../common/propsValues/scroll.mjs';
21
- import '../common/propsValues/markdownNodeType.mjs';
22
- import '../common/fileType.mjs';
23
- import '@transferwise/icons';
24
- import '../common/closeButton/CloseButton.messages.mjs';
25
- import { jsxs, jsx } from 'react/jsx-runtime';
26
- import ProcessIndicator from '../processIndicator/ProcessIndicator.mjs';
27
- import messages from '../i18n/commonMessages/Button.messages.mjs';
28
- import { typeClassMap, priorityClassMap } from './classMap.mjs';
29
- import { logDeprecationNotices, establishNewType, establishNewPriority } from './legacyUtils/legacyUtils.mjs';
30
-
31
- const LegacyButton = /*#__PURE__*/forwardRef(({
32
- as: component = 'button',
33
- block = false,
34
- children,
35
- className,
36
- disabled,
37
- loading = false,
38
- priority = Priority.PRIMARY,
39
- size = Size.MEDIUM,
40
- type = ControlType.ACCENT,
41
- onClick,
42
- ...rest
43
- }, ref) => {
44
- const intl = useIntl();
45
- logDeprecationNotices({
46
- size,
47
- type
48
- });
49
- const newType = establishNewType(type);
50
- const newPriority = establishNewPriority(priority, type);
51
- const classes = clsx(`btn btn-${size}`, `np-btn np-btn-${size}`, {
52
- 'btn-loading': loading,
53
- 'btn-block np-btn-block': block,
54
- disabled
55
- },
56
- // @ts-expect-error fix when refactor `typeClassMap` to TypeScript
57
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
58
- typeClassMap[newType],
59
- // @ts-expect-error fix when refactor `typeClassMap` to TypeScript
60
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
61
- priorityClassMap[newPriority], className);
62
- function processIndicatorSize() {
63
- return ['sm', 'xs'].includes(size) ? 'xxs' : 'xs';
64
- }
65
- const Element = component ?? 'button';
66
- let props;
67
- if (Element === 'button') {
68
- const {
69
- htmlType = 'button',
70
- ...restProps
71
- } = rest;
72
- props = {
73
- ...restProps,
74
- disabled,
75
- 'aria-disabled': loading,
76
- type: htmlType
77
- };
78
- } else {
79
- props = {
80
- ...rest,
81
- 'aria-disabled': loading
82
- };
83
- }
84
- /**
85
- * Ensures that the button cannot be activated in loading or disabled mode,
86
- * when `aria-disabled` might be used over the `disabled` HTML attribute
87
- */
88
- const handleClick = handler => event => {
89
- if (disabled || loading) {
90
- event.preventDefault();
91
- } else if (typeof handler === 'function') {
92
- handler(event);
93
- }
94
- };
95
- return /*#__PURE__*/jsxs(Element, {
96
- ref: ref,
97
- className: classes,
98
- onClick: handleClick(onClick),
99
- ...props,
100
- "aria-live": loading ? 'polite' : 'off',
101
- "aria-busy": loading,
102
- "aria-label": loading ? intl.formatMessage(messages.loadingAriaLabel) : rest['aria-label'],
103
- children: [children, loading && /*#__PURE__*/jsx(ProcessIndicator, {
104
- size: processIndicatorSize(),
105
- className: "btn-loader",
106
- "data-testid": "ButtonProgressIndicator"
107
- })]
108
- });
109
- });
110
-
111
- export { LegacyButton as default };
112
- //# sourceMappingURL=LegacyButton.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyButton.mjs","sources":["../../src/button/LegacyButton.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ElementType, forwardRef, MouseEvent } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport {\n Size,\n ControlType,\n Priority,\n ControlTypeAccent,\n ControlTypeNegative,\n ControlTypePositive,\n PriorityPrimary,\n PrioritySecondary,\n PriorityTertiary,\n SizeExtraSmall,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport ProcessIndicator from '../processIndicator';\n\nimport messages from '../i18n/commonMessages/Button.messages';\nimport { typeClassMap, priorityClassMap } from './classMap';\nimport { establishNewPriority, establishNewType, logDeprecationNotices } from './legacyUtils';\n\n/** @deprecated */\ntype DeprecatedTypes = 'primary' | 'pay' | 'secondary' | 'danger' | 'link';\n\n/** @deprecated */\ntype DeprecatedSizes = SizeExtraSmall;\n\ntype CommonProps = {\n v2?: false;\n block?: boolean;\n disabled?: boolean;\n loading?: boolean;\n type?: ControlTypeAccent | ControlTypeNegative | ControlTypePositive | DeprecatedTypes | null;\n priority?: PriorityPrimary | PrioritySecondary | PriorityTertiary | null;\n size?: SizeSmall | SizeMedium | SizeLarge | DeprecatedSizes;\n htmlType?: 'submit' | 'reset' | 'button';\n};\n\ntype ButtonProps = CommonProps &\n Omit<React.ComponentPropsWithRef<'button'>, 'type'> & {\n as?: 'button';\n };\n\ntype AnchorProps = CommonProps &\n Omit<React.ComponentPropsWithRef<'a'>, 'type'> & {\n as?: 'a';\n href?: string;\n };\n\nexport type LegacyButtonProps = ButtonProps | AnchorProps;\n\nexport type ButtonReferenceType = HTMLButtonElement | HTMLAnchorElement;\n\n/**\n * @deprecated make sure you use new Button component via `<Button v2 .. />` and new props\n */\nconst LegacyButton = forwardRef<ButtonReferenceType, LegacyButtonProps>(\n (\n {\n as: component = 'button',\n block = false,\n children,\n className,\n disabled,\n loading = false,\n priority = Priority.PRIMARY,\n size = Size.MEDIUM,\n type = ControlType.ACCENT,\n onClick,\n ...rest\n }: LegacyButtonProps,\n ref,\n ) => {\n const intl = useIntl();\n\n logDeprecationNotices({ size, type });\n\n const newType = establishNewType(type);\n const newPriority = establishNewPriority(priority, type);\n\n const classes = clsx(\n `btn btn-${size}`,\n `np-btn np-btn-${size}`,\n {\n 'btn-loading': loading,\n 'btn-block np-btn-block': block,\n disabled,\n },\n // @ts-expect-error fix when refactor `typeClassMap` to TypeScript\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n typeClassMap[newType],\n // @ts-expect-error fix when refactor `typeClassMap` to TypeScript\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n priorityClassMap[newPriority],\n className,\n );\n\n function processIndicatorSize() {\n return ['sm', 'xs'].includes(size) ? 'xxs' : 'xs';\n }\n\n const Element = (component as ElementType) ?? 'button';\n let props;\n\n if (Element === 'button') {\n const { htmlType = 'button', ...restProps } = rest as ButtonProps;\n props = {\n ...restProps,\n disabled,\n 'aria-disabled': loading,\n type: htmlType,\n };\n } else {\n props = {\n ...rest,\n 'aria-disabled': loading,\n } as AnchorProps;\n }\n\n /**\n * Ensures that the button cannot be activated in loading or disabled mode,\n * when `aria-disabled` might be used over the `disabled` HTML attribute\n */\n const handleClick =\n (handler: LegacyButtonProps['onClick']) =>\n (event: MouseEvent<HTMLButtonElement> & MouseEvent<HTMLAnchorElement>) => {\n if (disabled || loading) {\n event.preventDefault();\n } else if (typeof handler === 'function') {\n handler(event);\n }\n };\n\n return (\n <Element\n ref={ref as React.Ref<ButtonReferenceType>}\n className={classes}\n onClick={handleClick(onClick)}\n {...props}\n aria-live={loading ? 'polite' : 'off'}\n aria-busy={loading}\n aria-label={loading ? intl.formatMessage(messages.loadingAriaLabel) : rest['aria-label']}\n >\n {children}\n {loading && (\n <ProcessIndicator\n size={processIndicatorSize()}\n className=\"btn-loader\"\n data-testid=\"ButtonProgressIndicator\"\n />\n )}\n </Element>\n );\n },\n);\n\nexport default LegacyButton;\n"],"names":["LegacyButton","forwardRef","as","component","block","children","className","disabled","loading","priority","Priority","PRIMARY","size","Size","MEDIUM","type","ControlType","ACCENT","onClick","rest","ref","intl","useIntl","logDeprecationNotices","newType","establishNewType","newPriority","establishNewPriority","classes","clsx","typeClassMap","priorityClassMap","processIndicatorSize","includes","Element","props","htmlType","restProps","handleClick","handler","event","preventDefault","_jsxs","formatMessage","messages","loadingAriaLabel","_jsx","ProcessIndicator"],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- .wds-Button {
2
- --Button-background: var(--color-interactive-accent);
3
- --Button-background-hover: var(--color-interactive-accent-hover);
4
- --Button-background-active: var(--color-interactive-accent-active);
5
- --Button-color: var(--color-interactive-control);
6
- --Button-border-radius: var(--radius-full);
7
- --Button-label-gap: var(--size-4);
8
- --Button-large-padding: var(--size-12) var(--size-16);
9
- --Button-medium-padding: var(--size-8) var(--size-12);
10
- --Button-small-padding: calc(var(--size-10) * 0.5) var(--size-12);
11
- --Button-avatar-border-color: var(--color-border-neutral);
12
- --Button-transition-duration: 150ms;
13
- --Button-transition-easing: ease-in-out;
14
- --Button-secondary-background: var(--color-interactive-neutral);
15
- --Button-secondary-background-hover: var(--color-interactive-neutral-hover);
16
- --Button-secondary-background-active: var(--color-interactive-neutral-active);
17
- --Button-secondary-color: var(--color-interactive-primary);
18
- --Button-tertiary-background: var(--color-background-neutral);
19
- --Button-tertiary-background-hover: var(--color-background-neutral-hover);
20
- --Button-tertiary-background-active: var(--color-background-neutral-active);
21
- --Button-tertiary-color: var(--color-content-primary);
22
- --Button-minimal-background: transparent;
23
- --Button-minimal-background-hover: var(--color-background-screen-hover);
24
- --Button-minimal-background-active: var(--color-background-screen-active);
25
- --Button-minimal-color: var(--color-interactive-primary);
26
- --Button-primary-negative-background: var(--color-sentiment-negative-primary);
27
- --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
28
- --Button-primary-negative-background-active: var(--color-sentiment-negative-primary-active);
29
- --Button-primary-negative-color: var(--color-contrast);
30
- --Button-secondary-negative-background: var(--color-sentiment-negative-secondary);
31
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-secondary-hover);
32
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-secondary-active);
33
- --Button-secondary-negative-color: var(--color-sentiment-negative-primary);
34
- }
35
- .np-theme-personal--bright-green .wds-Button {
36
- --color-contrast: #FFFFFF;
37
- --Button-secondary-color: var(--color-interactive-control);
38
- --Button-secondary-negative-color: var(--color-contrast);
39
- }
@@ -1,23 +0,0 @@
1
- .np-btn {
2
- position: relative;
3
- }
4
- .np-btn.np-btn-block > span.btn-loader {
5
- position: absolute;
6
- left: 24px;
7
- left: var(--size-24);
8
- }
9
- [dir="rtl"] .np-btn.np-btn-block > span.btn-loader {
10
- right: 24px;
11
- right: var(--size-24);
12
- left: auto;
13
- left: initial;
14
- }
15
- .np-btn.np-btn-xs > span.btn-loader {
16
- background-size: 16px 16px;
17
- }
18
- .np-btn.np-btn-xs.btn-block > span.btn-loader {
19
- top: 0;
20
- }
21
- .np-btn.disabled[class] {
22
- pointer-events: auto;
23
- }
@@ -1,33 +0,0 @@
1
- import { LegacyButtonProps } from './LegacyButton';
2
- import { ButtonProps as NewButtonProps } from './Button.types';
3
- export type ButtonProps = LegacyButtonProps | NewButtonProps;
4
- declare const Button: import("react").ForwardRefExoticComponent<(Omit<{
5
- v2?: false;
6
- block?: boolean;
7
- disabled?: boolean;
8
- loading?: boolean;
9
- type?: import("../common").ControlTypeAccent | import("../common").ControlTypeNegative | import("../common").ControlTypePositive | ("link" | "primary" | "secondary" | "pay" | "danger") | null;
10
- priority?: import("../common").PriorityPrimary | import("../common").PrioritySecondary | import("../common").PriorityTertiary | null;
11
- size?: import("../common").SizeSmall | import("../common").SizeMedium | import("../common").SizeLarge | "xs";
12
- htmlType?: "submit" | "reset" | "button";
13
- } & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
14
- ref?: ((instance: HTMLButtonElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLButtonElement> | null | undefined;
15
- }, "type"> & {
16
- as?: "button";
17
- }, "ref"> | Omit<{
18
- v2?: false;
19
- block?: boolean;
20
- disabled?: boolean;
21
- loading?: boolean;
22
- type?: import("../common").ControlTypeAccent | import("../common").ControlTypeNegative | import("../common").ControlTypePositive | ("link" | "primary" | "secondary" | "pay" | "danger") | null;
23
- priority?: import("../common").PriorityPrimary | import("../common").PrioritySecondary | import("../common").PriorityTertiary | null;
24
- size?: import("../common").SizeSmall | import("../common").SizeMedium | import("../common").SizeLarge | "xs";
25
- htmlType?: "submit" | "reset" | "button";
26
- } & Omit<Omit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
27
- ref?: ((instance: HTMLAnchorElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLAnchorElement> | null | undefined;
28
- }, "type"> & {
29
- as?: "a";
30
- href?: string;
31
- }, "ref"> | Omit<import("./Button.types").ButtonElementProps, "ref"> | Omit<import("./Button.types").AnchorElementProps, "ref">) & import("react").RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
32
- export default Button;
33
- //# sourceMappingURL=Button.resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.resolver.d.ts","sourceRoot":"","sources":["../../../src/button/Button.resolver.tsx"],"names":[],"mappings":"AACA,OAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG/D,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAwD7D,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;wMASV,CAAC;AAIH,eAAe,MAAM,CAAC"}
@@ -1,54 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import type { PrimitiveButtonProps, PrimitiveAnchorProps } from '../primitives';
3
- import type { AvatarLayoutProps } from '../avatarLayout';
4
- export type ButtonSentiment = 'default' | 'negative';
5
- export type ButtonPriority = 'primary' | 'secondary' | 'tertiary' | 'minimal';
6
- export type ButtonSize = 'sm' | 'md' | 'lg';
7
- /**
8
- * Common properties for the Button component.
9
- */
10
- export interface CommonProps {
11
- v2: true;
12
- /**
13
- * The HTML element to render
14
- * @default 'button'
15
- **/
16
- as?: 'button' | 'a';
17
- /**
18
- * @default false
19
- **/
20
- disabled?: boolean;
21
- /**
22
- * @default false
23
- * */
24
- loading?: boolean;
25
- /** Whether the button should take up the full width of its container */
26
- block?: boolean;
27
- /**
28
- * Size of the button
29
- * @default lg
30
- * */
31
- size?: ButtonSize;
32
- /**
33
- * Priority of the button
34
- * @default "primary"
35
- */
36
- priority?: ButtonPriority;
37
- /**
38
- * Sentiment of the button
39
- * @default default
40
- */
41
- sentiment?: ButtonSentiment;
42
- /** Icon to be displayed on the left side of the button */
43
- iconStart?: React.ElementType;
44
- /** Icon to be displayed on the right side of the button */
45
- iconEnd?: React.ElementType;
46
- /** Media to be displayed on the left side of the button */
47
- avatars?: AvatarLayoutProps['avatars'];
48
- /** Content to be displayed inside the button */
49
- children?: ReactNode;
50
- }
51
- export type ButtonElementProps = PrimitiveButtonProps & CommonProps;
52
- export type AnchorElementProps = PrimitiveAnchorProps & CommonProps;
53
- export type ButtonProps = ButtonElementProps | AnchorElementProps;
54
- //# sourceMappingURL=Button.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.types.d.ts","sourceRoot":"","sources":["../../../src/button/Button.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,IAAI,CAAC;IAET;;;QAGI;IACJ,EAAE,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IAEpB;;QAEI;IACJ,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;SAEK;IACL,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;SAGK;IACL,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAE9B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAE5B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEvC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,WAAW,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,WAAW,CAAC;AAEpE,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -1,30 +0,0 @@
1
- import { ControlTypeAccent, ControlTypeNegative, ControlTypePositive, PriorityPrimary, PrioritySecondary, PriorityTertiary, SizeExtraSmall, SizeSmall, SizeMedium, SizeLarge } from '../common';
2
- /** @deprecated */
3
- type DeprecatedTypes = 'primary' | 'pay' | 'secondary' | 'danger' | 'link';
4
- /** @deprecated */
5
- type DeprecatedSizes = SizeExtraSmall;
6
- type CommonProps = {
7
- v2?: false;
8
- block?: boolean;
9
- disabled?: boolean;
10
- loading?: boolean;
11
- type?: ControlTypeAccent | ControlTypeNegative | ControlTypePositive | DeprecatedTypes | null;
12
- priority?: PriorityPrimary | PrioritySecondary | PriorityTertiary | null;
13
- size?: SizeSmall | SizeMedium | SizeLarge | DeprecatedSizes;
14
- htmlType?: 'submit' | 'reset' | 'button';
15
- };
16
- type ButtonProps = CommonProps & Omit<React.ComponentPropsWithRef<'button'>, 'type'> & {
17
- as?: 'button';
18
- };
19
- type AnchorProps = CommonProps & Omit<React.ComponentPropsWithRef<'a'>, 'type'> & {
20
- as?: 'a';
21
- href?: string;
22
- };
23
- export type LegacyButtonProps = ButtonProps | AnchorProps;
24
- export type ButtonReferenceType = HTMLButtonElement | HTMLAnchorElement;
25
- /**
26
- * @deprecated make sure you use new Button component via `<Button v2 .. />` and new props
27
- */
28
- declare const LegacyButton: import("react").ForwardRefExoticComponent<(Omit<ButtonProps, "ref"> | Omit<AnchorProps, "ref">) & import("react").RefAttributes<ButtonReferenceType>>;
29
- export default LegacyButton;
30
- //# sourceMappingURL=LegacyButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyButton.d.ts","sourceRoot":"","sources":["../../../src/button/LegacyButton.tsx"],"names":[],"mappings":"AAIA,OAAO,EAIL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACV,MAAM,WAAW,CAAC;AAOnB,kBAAkB;AAClB,KAAK,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3E,kBAAkB;AAClB,KAAK,eAAe,GAAG,cAAc,CAAC;AAEtC,KAAK,WAAW,GAAG;IACjB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,eAAe,GAAG,IAAI,CAAC;IAC9F,QAAQ,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACzE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe,CAAC;IAC5D,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC1C,CAAC;AAEF,KAAK,WAAW,GAAG,WAAW,GAC5B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,GAAG;IACpD,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf,CAAC;AAEJ,KAAK,WAAW,GAAG,WAAW,GAC5B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG;IAC/C,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEJ,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAExE;;GAEG;AACH,QAAA,MAAM,YAAY,uJAkGjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,75 +0,0 @@
1
- import { forwardRef } from 'react';
2
- import LegacyButton, { LegacyButtonProps } from './LegacyButton';
3
- import { ButtonProps as NewButtonProps } from './Button.types';
4
- import NewButton from './Button';
5
-
6
- export type ButtonProps = LegacyButtonProps | NewButtonProps;
7
-
8
- const mapProps = (props: LegacyButtonProps): NewButtonProps => {
9
- const { priority, size, type, ...newProps } = props;
10
-
11
- const priorityMapping: Record<string, Record<string, NewButtonProps['priority']>> = {
12
- accent: {
13
- primary: 'primary',
14
- secondary: 'tertiary',
15
- tertiary: 'minimal',
16
- },
17
- positive: {
18
- primary: 'primary',
19
- secondary: 'tertiary',
20
- tertiary: 'tertiary',
21
- },
22
- negative: {
23
- primary: 'primary',
24
- secondary: 'secondary',
25
- tertiary: 'secondary',
26
- },
27
- };
28
-
29
- const mappedPriority =
30
- type && priority ? priorityMapping[type]?.[priority] || priority : priority || undefined;
31
- const mappedSentiment = type === 'negative' ? 'negative' : undefined;
32
-
33
- const legacyButtonTypes: LegacyButtonProps['type'][] = [
34
- 'accent',
35
- 'negative',
36
- 'positive',
37
- 'primary',
38
- 'pay',
39
- 'secondary',
40
- 'danger',
41
- 'link',
42
- ];
43
-
44
- const resolveSize = () => {
45
- if (size) {
46
- return { xs: 'sm', sm: 'sm', md: 'md', lg: 'lg' }[size] || size;
47
- }
48
-
49
- return size;
50
- };
51
-
52
- return {
53
- ...newProps,
54
- size: resolveSize(),
55
- priority: mappedPriority,
56
- sentiment: mappedSentiment || ('sentiment' in props ? props.sentiment : null),
57
- type: type && !legacyButtonTypes.includes(type) ? type : props.htmlType || null,
58
- v2: true,
59
- } as NewButtonProps;
60
- };
61
-
62
- const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>((props, ref) => {
63
- const { v2 = false, ...rest } = props;
64
-
65
- if (v2) {
66
- const mappedProps = mapProps(props as LegacyButtonProps);
67
- return <NewButton {...mappedProps} ref={ref} />;
68
- }
69
-
70
- return <LegacyButton {...(rest as LegacyButtonProps)} ref={ref} />;
71
- });
72
-
73
- Button.displayName = 'Button';
74
-
75
- export default Button;
@@ -1,27 +0,0 @@
1
- import { Meta } from '@storybook/react';
2
- import Button from './Button.resolver';
3
- import { expect, userEvent, within } from '@storybook/test';
4
- import { storyConfig } from '../test-utils';
5
-
6
- const meta: Meta<typeof Button> = {
7
- component: Button,
8
- title: 'Actions/Button/Tests',
9
- };
10
- export default meta;
11
-
12
- export const FocusMinimal = storyConfig(
13
- {
14
- render: () => (
15
- <Button v2 priority="minimal">
16
- Focus has underline
17
- </Button>
18
- ),
19
- },
20
- {},
21
- );
22
- FocusMinimal.play = async ({ canvasElement }) => {
23
- await userEvent.tab();
24
- const canvas = within(canvasElement);
25
- const buttonElement: HTMLButtonElement = canvas.getByRole('button');
26
- await expect(buttonElement).toHaveFocus();
27
- };
@@ -1,68 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import type { PrimitiveButtonProps, PrimitiveAnchorProps } from '../primitives';
3
- import type { AvatarLayoutProps } from '../avatarLayout';
4
-
5
- export type ButtonSentiment = 'default' | 'negative';
6
- export type ButtonPriority = 'primary' | 'secondary' | 'tertiary' | 'minimal';
7
- export type ButtonSize = 'sm' | 'md' | 'lg';
8
-
9
- /**
10
- * Common properties for the Button component.
11
- */
12
- export interface CommonProps {
13
- v2: true;
14
-
15
- /**
16
- * The HTML element to render
17
- * @default 'button'
18
- **/
19
- as?: 'button' | 'a';
20
-
21
- /**
22
- * @default false
23
- **/
24
- disabled?: boolean;
25
-
26
- /**
27
- * @default false
28
- * */
29
- loading?: boolean;
30
-
31
- /** Whether the button should take up the full width of its container */
32
- block?: boolean;
33
-
34
- /**
35
- * Size of the button
36
- * @default lg
37
- * */
38
- size?: ButtonSize;
39
-
40
- /**
41
- * Priority of the button
42
- * @default "primary"
43
- */
44
- priority?: ButtonPriority;
45
-
46
- /**
47
- * Sentiment of the button
48
- * @default default
49
- */
50
- sentiment?: ButtonSentiment;
51
-
52
- /** Icon to be displayed on the left side of the button */
53
- iconStart?: React.ElementType;
54
-
55
- /** Icon to be displayed on the right side of the button */
56
- iconEnd?: React.ElementType;
57
-
58
- /** Media to be displayed on the left side of the button */
59
- avatars?: AvatarLayoutProps['avatars'];
60
-
61
- /** Content to be displayed inside the button */
62
- children?: ReactNode;
63
- }
64
-
65
- export type ButtonElementProps = PrimitiveButtonProps & CommonProps;
66
- export type AnchorElementProps = PrimitiveAnchorProps & CommonProps;
67
-
68
- export type ButtonProps = ButtonElementProps | AnchorElementProps;
@@ -1,39 +0,0 @@
1
- .wds-Button {
2
- --Button-background: var(--color-interactive-accent);
3
- --Button-background-hover: var(--color-interactive-accent-hover);
4
- --Button-background-active: var(--color-interactive-accent-active);
5
- --Button-color: var(--color-interactive-control);
6
- --Button-border-radius: var(--radius-full);
7
- --Button-label-gap: var(--size-4);
8
- --Button-large-padding: var(--size-12) var(--size-16);
9
- --Button-medium-padding: var(--size-8) var(--size-12);
10
- --Button-small-padding: calc(var(--size-10) * 0.5) var(--size-12);
11
- --Button-avatar-border-color: var(--color-border-neutral);
12
- --Button-transition-duration: 150ms;
13
- --Button-transition-easing: ease-in-out;
14
- --Button-secondary-background: var(--color-interactive-neutral);
15
- --Button-secondary-background-hover: var(--color-interactive-neutral-hover);
16
- --Button-secondary-background-active: var(--color-interactive-neutral-active);
17
- --Button-secondary-color: var(--color-interactive-primary);
18
- --Button-tertiary-background: var(--color-background-neutral);
19
- --Button-tertiary-background-hover: var(--color-background-neutral-hover);
20
- --Button-tertiary-background-active: var(--color-background-neutral-active);
21
- --Button-tertiary-color: var(--color-content-primary);
22
- --Button-minimal-background: transparent;
23
- --Button-minimal-background-hover: var(--color-background-screen-hover);
24
- --Button-minimal-background-active: var(--color-background-screen-active);
25
- --Button-minimal-color: var(--color-interactive-primary);
26
- --Button-primary-negative-background: var(--color-sentiment-negative-primary);
27
- --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
28
- --Button-primary-negative-background-active: var(--color-sentiment-negative-primary-active);
29
- --Button-primary-negative-color: var(--color-contrast);
30
- --Button-secondary-negative-background: var(--color-sentiment-negative-secondary);
31
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-secondary-hover);
32
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-secondary-active);
33
- --Button-secondary-negative-color: var(--color-sentiment-negative-primary);
34
- }
35
- .np-theme-personal--bright-green .wds-Button {
36
- --color-contrast: #FFFFFF;
37
- --Button-secondary-color: var(--color-interactive-control);
38
- --Button-secondary-negative-color: var(--color-contrast);
39
- }
@@ -1,50 +0,0 @@
1
- .wds-Button {
2
- --Button-background: var(--color-interactive-accent);
3
- --Button-background-hover: var(--color-interactive-accent-hover);
4
- --Button-background-active: var(--color-interactive-accent-active);
5
- --Button-color: var(--color-interactive-control);
6
- --Button-border-radius: var(--radius-full);
7
- --Button-label-gap: var(--size-4);
8
-
9
- --Button-large-padding: var(--size-12) var(--size-16);
10
- --Button-medium-padding: var(--size-8) var(--size-12);
11
- // 5px is required by design
12
- --Button-small-padding: calc(var(--size-10) * .5) var(--size-12);
13
-
14
- --Button-avatar-border-color: var(--color-border-neutral);
15
- --Button-transition-duration: 150ms;
16
- --Button-transition-easing: ease-in-out;
17
-
18
- --Button-secondary-background: var(--color-interactive-neutral);
19
- --Button-secondary-background-hover: var(--color-interactive-neutral-hover);
20
- --Button-secondary-background-active: var(--color-interactive-neutral-active);
21
- --Button-secondary-color: var(--color-interactive-primary);
22
-
23
- --Button-tertiary-background: var(--color-background-neutral);
24
- --Button-tertiary-background-hover: var(--color-background-neutral-hover);
25
- --Button-tertiary-background-active: var(--color-background-neutral-active);
26
- --Button-tertiary-color: var(--color-content-primary);
27
-
28
- --Button-minimal-background: transparent;
29
- --Button-minimal-background-hover: var(--color-background-screen-hover);
30
- --Button-minimal-background-active: var(--color-background-screen-active);
31
- --Button-minimal-color: var(--color-interactive-primary);
32
-
33
- --Button-primary-negative-background: var(--color-sentiment-negative-primary);
34
- --Button-primary-negative-background-hover: var(--color-sentiment-negative-primary-hover);
35
- --Button-primary-negative-background-active: var(--color-sentiment-negative-primary-active);
36
- --Button-primary-negative-color: var(--color-contrast);
37
-
38
- --Button-secondary-negative-background: var(--color-sentiment-negative-secondary);
39
- --Button-secondary-negative-background-hover: var(--color-sentiment-negative-secondary-hover);
40
- --Button-secondary-negative-background-active: var(--color-sentiment-negative-secondary-active);
41
- --Button-secondary-negative-color: var(--color-sentiment-negative-primary);
42
- }
43
-
44
- .np-theme-personal--bright-green {
45
- .wds-Button {
46
- --color-contrast: #FFFFFF;
47
- --Button-secondary-color: var(--color-interactive-control);
48
- --Button-secondary-negative-color: var(--color-contrast);
49
- }
50
- }
@@ -1,23 +0,0 @@
1
- .np-btn {
2
- position: relative;
3
- }
4
- .np-btn.np-btn-block > span.btn-loader {
5
- position: absolute;
6
- left: 24px;
7
- left: var(--size-24);
8
- }
9
- [dir="rtl"] .np-btn.np-btn-block > span.btn-loader {
10
- right: 24px;
11
- right: var(--size-24);
12
- left: auto;
13
- left: initial;
14
- }
15
- .np-btn.np-btn-xs > span.btn-loader {
16
- background-size: 16px 16px;
17
- }
18
- .np-btn.np-btn-xs.btn-block > span.btn-loader {
19
- top: 0;
20
- }
21
- .np-btn.disabled[class] {
22
- pointer-events: auto;
23
- }