@workday/canvas-kit-react
Version:
The parent module that contains all Workday Canvas Kit React components
24 lines (23 loc) • 4.19 kB
JavaScript
import * as React from 'react';
import { createComponent } from '@workday/canvas-kit-react/common';
import { systemIconStencil } from '@workday/canvas-kit-react/icon';
import { createStencil, cssVar } from '@workday/canvas-kit-styling';
import { brand, system } from '@workday/canvas-tokens-web';
import { buttonColorPropVars, buttonStencil } from './BaseButton';
import { Button } from './Button';
const primaryButtonStencil = createStencil({
extends: buttonStencil,
base: { name: "m1sr2f", styles: "box-sizing:border-box;--background-button-65cb05:var(--cnvs-brand-action-base, var(--cnvs-brand-primary-base));--borderRadius-button-65cb05:var(--cnvs-sys-shape-round);--label-button-65cb05:var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent));--color-system-icon-212f69:var(--icon-b5fb58, var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent)));&:focus-visible, &.focus{--background-button-65cb05:var(--cnvs-brand-action-base, var(--cnvs-brand-primary-base));--label-button-65cb05:var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent));--boxShadowInner-button-65cb05:var(--cnvs-sys-color-border-inverse);--boxShadowOuter-button-65cb05:var(--cnvs-brand-common-focus-outline);--color-system-icon-212f69:var(--icon-2ae7b1, var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent)));}&:hover, &.hover{--background-button-65cb05:var(--cnvs-brand-action-dark, var(--cnvs-brand-primary-dark));--label-button-65cb05:var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent));--color-system-icon-212f69:var(--icon-c4b8f8, var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent)));}&:active, &.active{--background-button-65cb05:var(--cnvs-brand-action-darkest, var(--cnvs-brand-primary-darkest));--label-button-65cb05:var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent));--color-system-icon-212f69:var(--icon-93b1ce, var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent)));}&:disabled, &.disabled{--background-button-65cb05:var(--cnvs-brand-action-base, var(--cnvs-brand-primary-base));--label-button-65cb05:var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent));--opacity-button-65cb05:var(--cnvs-sys-opacity-disabled);--color-system-icon-212f69:var(--icon-c34400, var(--cnvs-brand-action-accent, var(--cnvs-brand-primary-accent)));}" },
modifiers: {
variant: {
// Inverse Styles
inverse: { name: "m1sr2g", styles: "--background-button-65cb05:var(--cnvs-sys-color-bg-default);--borderRadius-button-65cb05:var(--cnvs-sys-shape-round);--label-button-65cb05:var(--cnvs-sys-color-fg-strong);--color-system-icon-212f69:var(--icon-b5fb58, var(--cnvs-sys-color-fg-strong));&:focus-visible, &.focus{--background-button-65cb05:var(--cnvs-sys-color-bg-default);--label-button-65cb05:var(--cnvs-sys-color-fg-strong);--boxShadowInner-button-65cb05:var(--cnvs-sys-color-border-contrast-default);--boxShadowOuter-button-65cb05:var(--cnvs-sys-color-border-inverse);--color-system-icon-212f69:var(--icon-2ae7b1, var(--cnvs-sys-color-fg-strong));}&:hover, &.hover{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-default);--label-button-65cb05:var(--cnvs-sys-color-fg-stronger);--color-system-icon-212f69:var(--icon-c4b8f8, var(--cnvs-sys-color-fg-stronger));}&:active, &.active{--background-button-65cb05:var(--cnvs-sys-color-bg-alt-strong);--label-button-65cb05:var(--cnvs-sys-color-fg-stronger);--color-system-icon-212f69:var(--icon-93b1ce, var(--cnvs-sys-color-fg-stronger));}&:disabled, &.disabled{--background-button-65cb05:var(--cnvs-sys-color-bg-default);--label-button-65cb05:var(--cnvs-sys-color-fg-strong);--color-system-icon-212f69:var(--icon-c34400, var(--cnvs-sys-color-fg-strong));}" }
}
}
}, "primary-button-cc7f35");
export const PrimaryButton = createComponent('button')({
displayName: 'PrimaryButton',
Component: ({ children, variant, size, iconPosition, grow, cs, ...elemProps }, ref, Element) => {
return (React.createElement(Button, { as: Element, ref: ref, iconPosition: iconPosition, size: size, grow: grow, cs: [primaryButtonStencil({ variant, iconPosition, grow, size }), cs], ...elemProps }, children));
},
});