@workday/canvas-kit-react 10.0.0-alpha.537-next.0 → 10.0.0-alpha.539-next.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 (117) hide show
  1. package/button/index.ts +8 -11
  2. package/button/lib/BaseButton.tsx +274 -256
  3. package/button/lib/Button.tsx +67 -0
  4. package/button/lib/DeleteButton.tsx +42 -58
  5. package/button/lib/PrimaryButton.tsx +82 -149
  6. package/button/lib/SecondaryButton.tsx +87 -173
  7. package/button/lib/TertiaryButton.tsx +158 -223
  8. package/button/lib/ToolbarDropdownButton.tsx +11 -2
  9. package/button/lib/ToolbarIconButton.tsx +10 -2
  10. package/button/lib/parts/ButtonLabelIcon.tsx +1 -7
  11. package/button/lib/types.ts +6 -8
  12. package/common/lib/CanvasProvider.tsx +50 -24
  13. package/common/lib/utils/slugify.ts +4 -1
  14. package/dist/commonjs/button/index.d.ts +8 -5
  15. package/dist/commonjs/button/index.d.ts.map +1 -1
  16. package/dist/commonjs/button/index.js +9 -13
  17. package/dist/commonjs/button/lib/BaseButton.d.ts +69 -5
  18. package/dist/commonjs/button/lib/BaseButton.d.ts.map +1 -1
  19. package/dist/commonjs/button/lib/BaseButton.js +199 -192
  20. package/dist/commonjs/button/lib/Button.d.ts +17 -0
  21. package/dist/commonjs/button/lib/Button.d.ts.map +1 -0
  22. package/dist/commonjs/button/lib/Button.js +42 -0
  23. package/dist/commonjs/button/lib/DeleteButton.d.ts +7 -9
  24. package/dist/commonjs/button/lib/DeleteButton.d.ts.map +1 -1
  25. package/dist/commonjs/button/lib/DeleteButton.js +29 -19
  26. package/dist/commonjs/button/lib/PrimaryButton.d.ts +15 -36
  27. package/dist/commonjs/button/lib/PrimaryButton.d.ts.map +1 -1
  28. package/dist/commonjs/button/lib/PrimaryButton.js +67 -79
  29. package/dist/commonjs/button/lib/SecondaryButton.d.ts +16 -43
  30. package/dist/commonjs/button/lib/SecondaryButton.d.ts.map +1 -1
  31. package/dist/commonjs/button/lib/SecondaryButton.js +71 -96
  32. package/dist/commonjs/button/lib/TertiaryButton.d.ts +35 -47
  33. package/dist/commonjs/button/lib/TertiaryButton.d.ts.map +1 -1
  34. package/dist/commonjs/button/lib/TertiaryButton.js +136 -134
  35. package/dist/commonjs/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
  36. package/dist/commonjs/button/lib/ToolbarDropdownButton.js +11 -2
  37. package/dist/commonjs/button/lib/ToolbarIconButton.d.ts.map +1 -1
  38. package/dist/commonjs/button/lib/ToolbarIconButton.js +10 -2
  39. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +1 -7
  40. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  41. package/dist/commonjs/button/lib/types.d.ts +6 -7
  42. package/dist/commonjs/button/lib/types.d.ts.map +1 -1
  43. package/dist/commonjs/card/lib/Card.d.ts +1 -1
  44. package/dist/commonjs/card/lib/CardBody.d.ts +1 -1
  45. package/dist/commonjs/card/lib/CardBody.d.ts.map +1 -1
  46. package/dist/commonjs/common/lib/CanvasProvider.d.ts +1 -8
  47. package/dist/commonjs/common/lib/CanvasProvider.d.ts.map +1 -1
  48. package/dist/commonjs/common/lib/CanvasProvider.js +31 -13
  49. package/dist/commonjs/common/lib/utils/slugify.d.ts.map +1 -1
  50. package/dist/commonjs/common/lib/utils/slugify.js +4 -1
  51. package/dist/commonjs/dialog/lib/Dialog.d.ts +1 -1
  52. package/dist/commonjs/layout/lib/Box.d.ts +3 -2
  53. package/dist/commonjs/layout/lib/Box.d.ts.map +1 -1
  54. package/dist/commonjs/layout/lib/Box.js +2 -1
  55. package/dist/commonjs/layout/lib/Flex.d.ts +1 -1
  56. package/dist/commonjs/layout/lib/Grid.d.ts +1 -1
  57. package/dist/commonjs/menu/lib/MenuItem.d.ts +1 -1
  58. package/dist/commonjs/popup/lib/Popup.d.ts +1 -1
  59. package/dist/commonjs/popup/lib/PopupBody.d.ts +1 -1
  60. package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
  61. package/dist/commonjs/segmented-control/lib/SegmentedControlButton.d.ts.map +1 -1
  62. package/dist/commonjs/segmented-control/lib/SegmentedControlButton.js +3 -1
  63. package/dist/commonjs/tabs/lib/TabsItem.d.ts +1 -1
  64. package/dist/es6/button/index.d.ts +8 -5
  65. package/dist/es6/button/index.d.ts.map +1 -1
  66. package/dist/es6/button/index.js +8 -5
  67. package/dist/es6/button/lib/BaseButton.d.ts +69 -5
  68. package/dist/es6/button/lib/BaseButton.d.ts.map +1 -1
  69. package/dist/es6/button/lib/BaseButton.js +199 -192
  70. package/dist/es6/button/lib/Button.d.ts +17 -0
  71. package/dist/es6/button/lib/Button.d.ts.map +1 -0
  72. package/dist/es6/button/lib/Button.js +20 -0
  73. package/dist/es6/button/lib/DeleteButton.d.ts +7 -9
  74. package/dist/es6/button/lib/DeleteButton.d.ts.map +1 -1
  75. package/dist/es6/button/lib/DeleteButton.js +31 -21
  76. package/dist/es6/button/lib/PrimaryButton.d.ts +15 -36
  77. package/dist/es6/button/lib/PrimaryButton.d.ts.map +1 -1
  78. package/dist/es6/button/lib/PrimaryButton.js +67 -79
  79. package/dist/es6/button/lib/SecondaryButton.d.ts +16 -43
  80. package/dist/es6/button/lib/SecondaryButton.d.ts.map +1 -1
  81. package/dist/es6/button/lib/SecondaryButton.js +71 -95
  82. package/dist/es6/button/lib/TertiaryButton.d.ts +35 -47
  83. package/dist/es6/button/lib/TertiaryButton.d.ts.map +1 -1
  84. package/dist/es6/button/lib/TertiaryButton.js +137 -135
  85. package/dist/es6/button/lib/ToolbarDropdownButton.d.ts.map +1 -1
  86. package/dist/es6/button/lib/ToolbarDropdownButton.js +11 -2
  87. package/dist/es6/button/lib/ToolbarIconButton.d.ts.map +1 -1
  88. package/dist/es6/button/lib/ToolbarIconButton.js +10 -2
  89. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +1 -7
  90. package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
  91. package/dist/es6/button/lib/types.d.ts +6 -7
  92. package/dist/es6/button/lib/types.d.ts.map +1 -1
  93. package/dist/es6/card/lib/Card.d.ts +1 -1
  94. package/dist/es6/card/lib/CardBody.d.ts +1 -1
  95. package/dist/es6/card/lib/CardBody.d.ts.map +1 -1
  96. package/dist/es6/common/lib/CanvasProvider.d.ts +1 -8
  97. package/dist/es6/common/lib/CanvasProvider.d.ts.map +1 -1
  98. package/dist/es6/common/lib/CanvasProvider.js +31 -13
  99. package/dist/es6/common/lib/utils/slugify.d.ts.map +1 -1
  100. package/dist/es6/common/lib/utils/slugify.js +4 -1
  101. package/dist/es6/dialog/lib/Dialog.d.ts +1 -1
  102. package/dist/es6/layout/lib/Box.d.ts +3 -2
  103. package/dist/es6/layout/lib/Box.d.ts.map +1 -1
  104. package/dist/es6/layout/lib/Box.js +2 -1
  105. package/dist/es6/layout/lib/Flex.d.ts +1 -1
  106. package/dist/es6/layout/lib/Grid.d.ts +1 -1
  107. package/dist/es6/menu/lib/MenuItem.d.ts +1 -1
  108. package/dist/es6/popup/lib/Popup.d.ts +1 -1
  109. package/dist/es6/popup/lib/PopupBody.d.ts +1 -1
  110. package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
  111. package/dist/es6/segmented-control/lib/SegmentedControlButton.d.ts.map +1 -1
  112. package/dist/es6/segmented-control/lib/SegmentedControlButton.js +3 -1
  113. package/dist/es6/tabs/lib/TabsItem.d.ts +1 -1
  114. package/layout/lib/Box.tsx +6 -4
  115. package/package.json +5 -3
  116. package/popup/lib/PopupCloseIcon.tsx +1 -1
  117. package/segmented-control/lib/SegmentedControlButton.tsx +3 -1
@@ -1,84 +1,72 @@
1
1
  import * as React from 'react';
2
- import { useTheme, createComponent, focusRing, } from '@workday/canvas-kit-react/common';
3
- import { colors } from '@workday/canvas-kit-react/tokens';
4
- import { BaseButton, getMinWidthStyles, getPaddingStyles } from './BaseButton';
5
- const getPrimaryButtonColors = (variant, theme) => {
6
- const { canvas: { palette: { primary: themePrimary }, }, } = theme;
7
- switch (variant) {
8
- case undefined:
9
- default:
10
- return {
11
- default: {
12
- background: themePrimary.main,
13
- icon: themePrimary.contrast,
14
- label: themePrimary.contrast,
15
- },
16
- hover: {
17
- background: themePrimary.dark,
18
- },
19
- active: {
20
- background: themePrimary.darkest,
21
- },
22
- focus: {
23
- background: themePrimary.main,
24
- },
25
- disabled: {
26
- background: themePrimary.main,
27
- },
28
- };
29
- case 'inverse':
30
- return {
31
- default: {
32
- background: colors.frenchVanilla100,
33
- icon: colors.blackPepper400,
34
- label: colors.blackPepper400,
35
- },
36
- hover: {
37
- background: colors.soap300,
38
- icon: colors.blackPepper500,
39
- label: colors.blackPepper500,
40
- },
41
- active: {
42
- background: colors.soap400,
43
- icon: colors.blackPepper500,
44
- label: colors.blackPepper500,
45
- },
46
- focus: {
47
- background: colors.frenchVanilla100,
48
- border: colors.blackPepper400,
49
- icon: colors.blackPepper400,
50
- label: colors.blackPepper400,
51
- focusRing: focusRing({
52
- separation: 1,
53
- innerColor: colors.blackPepper400,
54
- outerColor: colors.frenchVanilla100,
55
- }, theme),
56
- },
57
- // Identical to inverse 'default' styles. ButtonContainer will set opacity to 40%
58
- disabled: {
59
- background: colors.frenchVanilla100,
60
- icon: colors.blackPepper400,
61
- label: colors.blackPepper400,
62
- },
63
- };
64
- }
65
- };
66
- /**
67
- * Primary Buttons are high emphasis. Use once per screen to draw attention to the highest priority
68
- * action. Multiple primary buttons make it confusing for the user to understand what action they
69
- * should take. Not all screens require a Primary Button.
70
- *
71
- * Primary Buttons have four sizes: `extraSmall`, `small`, `medium`, and `large`. Icons are
72
- * supported for every size and can be positioned at the `start` or `end` with the `iconPosition`
73
- * prop.
74
- */
2
+ import { buttonVars } from './BaseButton';
3
+ import { createComponent } from '@workday/canvas-kit-react/common';
4
+ import { createStyles, cssVar, createModifiers } from '@workday/canvas-kit-styling';
5
+ import { base, brand, system } from '@workday/canvas-tokens-web';
6
+ import { Button } from './Button';
7
+ const primaryStyles = createStyles({
8
+ // Default Styles
9
+ [buttonVars.default.background]: cssVar(brand.primary.base, cssVar(base.blueberry400)),
10
+ [buttonVars.default.border]: 'transparent',
11
+ [buttonVars.default.borderRadius]: cssVar(system.shape.circle),
12
+ [buttonVars.default.label]: cssVar(brand.primary.accent),
13
+ [buttonVars.default.icon]: cssVar(brand.primary.accent),
14
+ // Hover Styles
15
+ [buttonVars.hover.background]: cssVar(brand.primary.dark),
16
+ [buttonVars.hover.border]: 'transparent',
17
+ [buttonVars.hover.label]: cssVar(brand.primary.accent),
18
+ [buttonVars.hover.icon]: cssVar(brand.primary.accent),
19
+ // Focus Styles
20
+ [buttonVars.focus.background]: cssVar(brand.primary.base),
21
+ [buttonVars.focus.border]: 'transparent',
22
+ [buttonVars.focus.label]: cssVar(brand.primary.accent),
23
+ [buttonVars.focus.icon]: cssVar(brand.primary.accent),
24
+ [buttonVars.focus.boxShadowInner]: cssVar(base.frenchVanilla100),
25
+ [buttonVars.focus.boxShadowOuter]: cssVar(brand.common.focusOutline),
26
+ // Active Styles
27
+ [buttonVars.active.background]: cssVar(brand.primary.darkest),
28
+ [buttonVars.active.border]: 'transparent',
29
+ [buttonVars.active.label]: cssVar(brand.primary.accent),
30
+ [buttonVars.active.icon]: cssVar(brand.primary.accent),
31
+ // Disabled Styles
32
+ [buttonVars.disabled.background]: cssVar(brand.primary.base),
33
+ [buttonVars.disabled.border]: 'transparent',
34
+ [buttonVars.disabled.label]: cssVar(brand.primary.accent),
35
+ [buttonVars.disabled.opacity]: '0.4',
36
+ [buttonVars.disabled.icon]: cssVar(brand.primary.accent),
37
+ });
38
+ export const primaryButtonModifiers = createModifiers({
39
+ variant: {
40
+ inverse: createStyles({
41
+ // Default Styles
42
+ [buttonVars.default.background]: cssVar(base.frenchVanilla100),
43
+ [buttonVars.default.borderRadius]: cssVar(system.shape.circle),
44
+ [buttonVars.default.label]: cssVar(base.blackPepper400),
45
+ [buttonVars.default.icon]: cssVar(base.blackPepper400),
46
+ // Hover Styles
47
+ [buttonVars.hover.background]: cssVar(base.soap300),
48
+ [buttonVars.hover.label]: cssVar(base.blackPepper500),
49
+ [buttonVars.hover.icon]: cssVar(base.blackPepper500),
50
+ // Focus Styles
51
+ [buttonVars.focus.background]: cssVar(base.frenchVanilla100),
52
+ [buttonVars.focus.label]: cssVar(base.blackPepper400),
53
+ [buttonVars.focus.icon]: cssVar(base.blackPepper400),
54
+ [buttonVars.focus.boxShadowInner]: cssVar(base.blackPepper400),
55
+ [buttonVars.focus.boxShadowOuter]: cssVar(base.frenchVanilla100),
56
+ // Active Styles
57
+ [buttonVars.active.background]: cssVar(base.soap400),
58
+ [buttonVars.active.label]: cssVar(base.blackPepper500),
59
+ [buttonVars.active.icon]: cssVar(base.blackPepper500),
60
+ // Disabled Styles
61
+ [buttonVars.disabled.background]: cssVar(base.frenchVanilla100),
62
+ [buttonVars.disabled.label]: cssVar(base.blackPepper400),
63
+ [buttonVars.disabled.icon]: cssVar(base.blackPepper400),
64
+ }),
65
+ },
66
+ });
75
67
  export const PrimaryButton = createComponent('button')({
76
68
  displayName: 'PrimaryButton',
77
- Component: ({ size = 'medium', iconPosition = 'start', variant, icon, shouldMirrorIcon = false, children, ...elemProps }, ref, Element) => {
78
- const theme = useTheme();
79
- return (React.createElement(BaseButton, Object.assign({ ref: ref, size: size, colors: getPrimaryButtonColors(variant, theme), padding: getPaddingStyles(children, size, icon, iconPosition), minWidth: getMinWidthStyles(children, size), as: Element }, elemProps),
80
- icon && iconPosition === 'start' && (React.createElement(BaseButton.Icon, { size: size, iconPosition: iconPosition, icon: icon, shouldMirrorIcon: shouldMirrorIcon })),
81
- children && React.createElement(BaseButton.Label, null, children),
82
- icon && iconPosition === 'end' && (React.createElement(BaseButton.Icon, { size: size, iconPosition: iconPosition, icon: icon, shouldMirrorIcon: shouldMirrorIcon }))));
69
+ Component: ({ children, icon, cs, iconPosition, variant, size, ...elemProps }, ref, Element) => {
70
+ return (React.createElement(Button, Object.assign({ as: Element, ref: ref, size: size, icon: icon, iconPosition: iconPosition, cs: [primaryStyles, primaryButtonModifiers({ variant: variant }), cs] }, elemProps), children));
83
71
  },
84
72
  });
@@ -1,48 +1,21 @@
1
- import * as React from 'react';
2
- import { GrowthBehavior, Themeable, EmotionCanvasTheme } from '@workday/canvas-kit-react/common';
3
- import { CanvasSystemIcon } from '@workday/design-assets-types';
4
- import { ButtonColors, ButtonSizes, IconPositions } from './types';
5
- import { BaseButtonProps } from './BaseButton';
6
- export interface SecondaryButtonProps extends Themeable, GrowthBehavior, BaseButtonProps {
7
- /**
8
- * The variant of the SecondaryButton.
9
- * @default undefined
10
- */
11
- variant?: 'inverse' | undefined;
12
- /**
13
- * There are four button sizes: `extraSmall`, `small`, `medium`, and `large`.
14
- * If no size is provided, it will default to `medium`.
15
- *
16
- * @default 'medium'
17
- */
18
- size?: ButtonSizes;
19
- /**
20
- * The icon of the Button.
21
- * Note: not displayed at `small` size
22
- */
23
- icon?: CanvasSystemIcon;
24
- /**
25
- * Button icon positions can either be `start` or `end`.
26
- * If no value is provided, it defaults to `start`.
27
- * @default 'start'
28
- */
29
- iconPosition?: IconPositions;
1
+ import { ButtonProps } from './Button';
2
+ /**
3
+ * Extends all the style properties from Box to our buttons as well as props from ButtonProps.
4
+ * We omit `ref` since all of our buttons use `createComponent` and already give access to `ref`.
5
+ * Use this type to extend and customize any one off buttons that you want full control over styling.
6
+ */
7
+ export interface SecondaryButtonProps extends ButtonProps {
30
8
  /**
31
- * If set to `true`, transform the icon's x-axis to mirror the graphic
32
- * @default false
9
+ * Variant has an option for `inverse` which will inverse the styling
33
10
  */
34
- shouldMirrorIcon?: boolean;
35
- children?: React.ReactNode;
11
+ variant?: 'inverse';
36
12
  }
37
- /**
38
- * Secondary Buttons have a medium level of emphasis. Use them for non-critical actions. Secondary
39
- * Buttons can be used on most pages without restrictions and work well for multiple actions of
40
- * equal weight. They can be used in conjunction with a Primary Button or independently.
41
- *
42
- * Secondary Buttons have four sizes: `extraSmall`, `small`, `medium`, and `large`. Icons are
43
- * supported for every size and can be positioned at the `start` or `end` with the `iconPosition`
44
- * prop.
45
- */
13
+ export declare const secondaryButtonModifiers: {
14
+ variant: {
15
+ inverse: string;
16
+ };
17
+ } & ((modifiers: Partial<{
18
+ variant: "inverse";
19
+ }>) => string);
46
20
  export declare const SecondaryButton: import("@workday/canvas-kit-react/common").ElementComponent<"button", SecondaryButtonProps>;
47
- export declare const getSecondaryButtonColors: (variant: 'inverse' | undefined, theme: EmotionCanvasTheme) => ButtonColors;
48
21
  //# sourceMappingURL=SecondaryButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecondaryButton.d.ts","sourceRoot":"","sources":["../../../../button/lib/SecondaryButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,cAAc,EAEd,SAAS,EACT,kBAAkB,EAGnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AACjE,OAAO,EAAa,eAAe,EAAsC,MAAM,cAAc,CAAC;AAE9F,MAAM,WAAW,oBAAqB,SAAQ,SAAS,EAAE,cAAc,EAAE,eAAe;IACtF;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,6FA+C1B,CAAC;AAEH,eAAO,MAAM,wBAAwB,YAC1B,SAAS,GAAG,SAAS,SACvB,kBAAkB,KACxB,YAoFF,CAAC"}
1
+ {"version":3,"file":"SecondaryButton.d.ts","sourceRoot":"","sources":["../../../../button/lib/SecondaryButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAS,WAAW,EAAC,MAAM,UAAU,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAkCD,eAAO,MAAM,wBAAwB;;;;;;cAgCnC,CAAC;AAEH,eAAO,MAAM,eAAe,6FAoB1B,CAAC"}
@@ -1,100 +1,76 @@
1
1
  import * as React from 'react';
2
- import { colors } from '@workday/canvas-kit-react/tokens';
3
- import { useTheme, createComponent, focusRing, } from '@workday/canvas-kit-react/common';
4
- import { BaseButton, getMinWidthStyles, getPaddingStyles } from './BaseButton';
5
- /**
6
- * Secondary Buttons have a medium level of emphasis. Use them for non-critical actions. Secondary
7
- * Buttons can be used on most pages without restrictions and work well for multiple actions of
8
- * equal weight. They can be used in conjunction with a Primary Button or independently.
9
- *
10
- * Secondary Buttons have four sizes: `extraSmall`, `small`, `medium`, and `large`. Icons are
11
- * supported for every size and can be positioned at the `start` or `end` with the `iconPosition`
12
- * prop.
13
- */
2
+ import { buttonVars } from './BaseButton';
3
+ import { createComponent } from '@workday/canvas-kit-react/common';
4
+ import { createStyles, cssVar, createModifiers } from '@workday/canvas-kit-styling';
5
+ import { base, brand, system } from '@workday/canvas-tokens-web';
6
+ import { Button } from './Button';
7
+ const secondaryStyles = createStyles({
8
+ // Default Styles
9
+ [buttonVars.default.background]: 'transparent',
10
+ [buttonVars.default.border]: cssVar(base.blackPepper400),
11
+ [buttonVars.default.borderRadius]: cssVar(system.shape.circle),
12
+ [buttonVars.default.label]: cssVar(base.blackPepper400),
13
+ [buttonVars.default.icon]: cssVar(base.blackPepper400),
14
+ // Hover Styles
15
+ [buttonVars.hover.background]: cssVar(base.blackPepper400),
16
+ [buttonVars.hover.border]: cssVar(base.blackPepper400),
17
+ [buttonVars.hover.label]: cssVar(brand.primary.accent),
18
+ [buttonVars.hover.icon]: cssVar(brand.primary.accent),
19
+ // Focus Styles
20
+ [buttonVars.focus.background]: 'transparent',
21
+ [buttonVars.focus.border]: cssVar(base.blackPepper400),
22
+ [buttonVars.focus.label]: cssVar(base.blackPepper400),
23
+ [buttonVars.focus.icon]: cssVar(base.blackPepper400),
24
+ [buttonVars.focus.boxShadowInner]: cssVar(base.frenchVanilla100),
25
+ [buttonVars.focus.boxShadowOuter]: cssVar(brand.common.focusOutline),
26
+ // Active Styles
27
+ [buttonVars.active.background]: cssVar(base.blackPepper500),
28
+ [buttonVars.active.border]: cssVar(base.blackPepper500),
29
+ [buttonVars.active.label]: cssVar(brand.primary.accent),
30
+ [buttonVars.active.icon]: cssVar(brand.primary.accent),
31
+ // Disabled Styles
32
+ [buttonVars.disabled.background]: 'transparent',
33
+ [buttonVars.disabled.border]: cssVar(base.blackPepper400),
34
+ [buttonVars.disabled.label]: cssVar(base.blackPepper400),
35
+ [buttonVars.disabled.opacity]: '0.4',
36
+ [buttonVars.disabled.icon]: cssVar(base.blackPepper400),
37
+ });
38
+ export const secondaryButtonModifiers = createModifiers({
39
+ variant: {
40
+ inverse: createStyles({
41
+ // Default Styles
42
+ [buttonVars.default.background]: 'transparent',
43
+ [buttonVars.default.border]: cssVar(base.frenchVanilla100),
44
+ [buttonVars.default.label]: cssVar(base.frenchVanilla100),
45
+ [buttonVars.default.icon]: cssVar(base.frenchVanilla100),
46
+ // Hover Styles
47
+ [buttonVars.hover.background]: cssVar(base.soap300),
48
+ [buttonVars.hover.border]: cssVar(base.soap300),
49
+ [buttonVars.hover.label]: cssVar(base.blackPepper500),
50
+ [buttonVars.hover.icon]: cssVar(base.blackPepper500),
51
+ // Focus Styles
52
+ [buttonVars.focus.background]: cssVar(base.frenchVanilla100),
53
+ [buttonVars.focus.border]: cssVar(base.frenchVanilla100),
54
+ [buttonVars.focus.label]: cssVar(base.blackPepper500),
55
+ [buttonVars.focus.icon]: cssVar(base.blackPepper500),
56
+ [buttonVars.focus.boxShadowInner]: cssVar(base.blackPepper500),
57
+ [buttonVars.focus.boxShadowOuter]: cssVar(base.frenchVanilla100),
58
+ // Active Styles
59
+ [buttonVars.active.background]: cssVar(base.soap400),
60
+ [buttonVars.active.border]: cssVar(base.soap400),
61
+ [buttonVars.active.label]: cssVar(base.blackPepper500),
62
+ [buttonVars.active.icon]: cssVar(base.blackPepper500),
63
+ // Disabled Styles
64
+ [buttonVars.disabled.background]: 'transparent',
65
+ [buttonVars.disabled.border]: cssVar(base.frenchVanilla100),
66
+ [buttonVars.disabled.label]: cssVar(base.frenchVanilla100),
67
+ [buttonVars.disabled.icon]: cssVar(base.frenchVanilla100),
68
+ }),
69
+ },
70
+ });
14
71
  export const SecondaryButton = createComponent('button')({
15
72
  displayName: 'SecondaryButton',
16
- Component: ({ size = 'medium', iconPosition = 'start', variant, icon, shouldMirrorIcon = false, children, ...elemProps }, ref, Element) => {
17
- const theme = useTheme();
18
- return (React.createElement(BaseButton, Object.assign({ ref: ref, size: size, colors: getSecondaryButtonColors(variant, theme), padding: getPaddingStyles(children, size, icon, iconPosition), minWidth: getMinWidthStyles(children, size), as: Element }, elemProps),
19
- icon && iconPosition === 'start' && (React.createElement(BaseButton.Icon, { size: size, iconPosition: iconPosition, icon: icon, shouldMirrorIcon: shouldMirrorIcon })),
20
- children && React.createElement(BaseButton.Label, null, children),
21
- icon && iconPosition === 'end' && (React.createElement(BaseButton.Icon, { size: size, iconPosition: iconPosition, icon: icon, shouldMirrorIcon: shouldMirrorIcon }))));
73
+ Component: ({ children, icon, cs, iconPosition, variant, ...elemProps }, ref, Element) => {
74
+ return (React.createElement(Button, Object.assign({ as: Element, ref: ref, icon: icon, iconPosition: iconPosition, cs: [secondaryStyles, secondaryButtonModifiers({ variant: variant }), cs] }, elemProps), children));
22
75
  },
23
76
  });
24
- export const getSecondaryButtonColors = (variant, theme) => {
25
- const { canvas: { palette: { primary: themePrimary }, }, } = theme;
26
- switch (variant) {
27
- case undefined:
28
- default:
29
- return {
30
- default: {
31
- background: 'transparent',
32
- border: colors.blackPepper400,
33
- icon: colors.blackPepper400,
34
- label: colors.blackPepper400,
35
- },
36
- hover: {
37
- background: colors.blackPepper400,
38
- border: colors.blackPepper400,
39
- icon: themePrimary.contrast,
40
- label: themePrimary.contrast,
41
- },
42
- active: {
43
- background: colors.blackPepper500,
44
- border: colors.blackPepper500,
45
- icon: themePrimary.contrast,
46
- label: themePrimary.contrast,
47
- },
48
- focus: {
49
- border: colors.blackPepper400,
50
- icon: colors.blackPepper400,
51
- label: colors.blackPepper400,
52
- },
53
- // Identical to 'default' styles. ButtonContainer will set opacity to 40%
54
- disabled: {
55
- background: 'transparent',
56
- border: colors.blackPepper400,
57
- icon: colors.blackPepper400,
58
- label: colors.blackPepper400,
59
- },
60
- };
61
- case 'inverse':
62
- return {
63
- default: {
64
- background: 'transparent',
65
- border: colors.frenchVanilla100,
66
- icon: colors.frenchVanilla100,
67
- label: colors.frenchVanilla100,
68
- },
69
- hover: {
70
- background: colors.soap300,
71
- border: colors.soap300,
72
- icon: colors.blackPepper500,
73
- label: colors.blackPepper500,
74
- },
75
- active: {
76
- background: colors.soap400,
77
- border: colors.soap400,
78
- icon: colors.blackPepper500,
79
- label: colors.blackPepper500,
80
- },
81
- focus: {
82
- background: colors.frenchVanilla100,
83
- icon: colors.blackPepper500,
84
- label: colors.blackPepper500,
85
- focusRing: focusRing({
86
- separation: 2,
87
- innerColor: 'currentColor',
88
- outerColor: colors.frenchVanilla100,
89
- }, theme),
90
- },
91
- // Identical to inverse 'default' styles. ButtonContainer will set opacity to 40%
92
- disabled: {
93
- background: 'transparent',
94
- border: colors.frenchVanilla100,
95
- icon: colors.frenchVanilla100,
96
- label: colors.frenchVanilla100,
97
- },
98
- };
99
- }
100
- };
@@ -1,53 +1,41 @@
1
- import * as React from 'react';
2
- import { Themeable } from '@workday/canvas-kit-react/common';
3
- import { CanvasSystemIcon } from '@workday/design-assets-types';
4
- import { IconPositions, ButtonSizes } from './types';
5
- import { BaseButtonProps } from './BaseButton';
6
- export interface TertiaryButtonProps extends Themeable, BaseButtonProps {
7
- /**
8
- * The variant of the TertiaryButton.
9
- */
10
- variant?: 'inverse' | undefined;
11
- /**
12
- * There are four button sizes: `extraSmall`, `small`, `medium`, and `large`.
13
- * If no size is provided, it will default to `medium`.
14
- */
15
- size?: ButtonSizes;
16
- /**
17
- * Button icon positions can either be `start` or `end`.
18
- * If no value is provided, it defaults to `start`.
19
- */
20
- iconPosition?: IconPositions;
21
- /**
22
- * The icon of the TertiaryButton.
23
- */
24
- icon?: CanvasSystemIcon;
25
- /**
26
- * The capitalization of the text in the button.
27
- */
28
- /**
29
- * If set to `true`, transform the icon's x-axis to mirror the graphic
30
- */
31
- shouldMirrorIcon?: boolean;
32
- /**
33
- * If set to `true`, transform text to all letters uppercase
34
- */
35
- allCaps?: boolean;
36
- children?: React.ReactNode;
1
+ import { ButtonProps } from './Button';
2
+ /**
3
+ * Extends all the style properties from Box to our buttons as well as props from ButtonProps.
4
+ * We omit `ref` since all of our buttons use `createComponent` and already give access to `ref`.
5
+ * Use this type to extend and customize any one off buttons that you want full control over styling.
6
+ */
7
+ export interface TertiaryButtonProps extends ButtonProps {
37
8
  /**
38
- * If set to `true`, make icon button available to use theme colors instead of default
9
+ * Variant has an option for `inverse` which will inverse the styling
39
10
  */
11
+ variant?: 'inverse';
40
12
  isThemeable?: boolean;
41
13
  }
42
- /**
43
- * Tertiary Buttons have the lowest emphasis. Use for less important actions that the user may not
44
- * often be looking to do. Tertiary Buttons have lower prominence as its container is not visible
45
- * until it is interacted with. Use Tertiary Buttons for supplemental actions such as “View More”,
46
- * “Read More” or “Select a File”. Tertiary Buttons are frequently used on Cards.
47
- *
48
- * Tertiary Buttons have four sizes: `extraSmall`, `small`, `medium` and `large`. Icons are
49
- * supported for every size and can be positioned at the `start` or `end` with the `iconPosition`
50
- * prop.
51
- */
14
+ export declare const tertiaryButtonModifiers: {
15
+ isThemeable: {
16
+ true: string;
17
+ };
18
+ variant: {
19
+ inverse: string;
20
+ };
21
+ iconPosition: {
22
+ largeOnly: string;
23
+ largeStart: string;
24
+ largeEnd: string;
25
+ mediumOnly: string;
26
+ mediumStart: string;
27
+ mediumEnd: string;
28
+ smallOnly: string;
29
+ smallStart: string;
30
+ smallEnd: string;
31
+ extraSmallOnly: string;
32
+ extraSmallStart: string;
33
+ extraSmallEnd: string;
34
+ };
35
+ } & ((modifiers: Partial<{
36
+ isThemeable: "true";
37
+ variant: "inverse";
38
+ iconPosition: "largeOnly" | "largeStart" | "largeEnd" | "mediumOnly" | "mediumStart" | "mediumEnd" | "smallOnly" | "smallStart" | "smallEnd" | "extraSmallOnly" | "extraSmallStart" | "extraSmallEnd";
39
+ }>) => string);
52
40
  export declare const TertiaryButton: import("@workday/canvas-kit-react/common").ElementComponent<"button", TertiaryButtonProps>;
53
41
  //# sourceMappingURL=TertiaryButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TertiaryButton.d.ts","sourceRoot":"","sources":["../../../../button/lib/TertiaryButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,SAAS,EAKV,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAe,aAAa,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AACjE,OAAO,EAAa,eAAe,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,mBAAoB,SAAQ,SAAS,EAAE,eAAe;IACrE;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAiJD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,4FAkDzB,CAAC"}
1
+ {"version":3,"file":"TertiaryButton.d.ts","sourceRoot":"","sources":["../../../../button/lib/TertiaryButton.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAS,WAAW,EAAC,MAAM,UAAU,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA+CD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;cA0ElC,CAAC;AAEH,eAAO,MAAM,cAAc,4FA+CzB,CAAC"}