packages-theme/console-base-theme/stories/rc/mixin-button/index.tsx (154 lines of code) (raw):
import React, {
useState,
useCallback
} from 'react';
import styled from 'styled-components';
import {
Button
} from '@alicloud/demo-rc-elements';
import {
mixinButtonShadow,
mixinButtonSizeXs,
mixinButtonSizeS,
mixinButtonSizeM,
mixinButtonSizeL,
mixinButtonSizeXl,
mixinButtonReset,
mixinButtonDanger,
mixinButtonMenu,
mixinButtonPrimary,
mixinButtonSecondary,
mixinButtonSecondaryAlt,
mixinButtonTertiary,
mixinButtonTertiaryAlt,
mixinButtonBrandPrimary,
mixinButtonBrandSecondary,
mixinButtonBrandSecondaryAlt,
mixinButtonBrandTertiary,
mixinButtonTextPrimary,
mixinButtonTextSecondary,
mixinButtonTextTertiary,
mixinButtonTextBrandPrimary,
mixinButtonTextBrandSecondary
} from '../../../src';
const ScButton = styled.button`
${mixinButtonReset};
`;
const ScButtonBase = styled(ScButton)`
margin: 8px 2px;
padding: 4px 4px;
`;
const ScButtonBaseText = styled(ScButton)`
margin: 8px 2px;
`;
const ScMixinButtonSizeXs = styled(ScButtonBase)`
${mixinButtonSizeXs}
${mixinButtonShadow}
${mixinButtonDanger}
`;
const ScMixinButtonSizeS = styled(ScButtonBase)`
${mixinButtonSizeS}
${mixinButtonShadow}
${mixinButtonDanger}
`;
const ScMixinButtonSizeM = styled(ScButtonBase)`
${mixinButtonSizeM}
${mixinButtonShadow}
${mixinButtonDanger}
`;
const ScMixinButtonSizeL = styled(ScButtonBase)`
${mixinButtonSizeL}
${mixinButtonShadow}
${mixinButtonDanger}
`;
const ScMixinButtonSizeXl = styled(ScButtonBase)`
${mixinButtonSizeXl}
${mixinButtonShadow}
${mixinButtonDanger}
`;
const ScMixinButtonDanger = styled(ScButtonBase)`
${mixinButtonDanger}
`;
const ScMixinButtonMenu = styled(ScButtonBase)`
${mixinButtonMenu}
`;
const ScMixinButtonPrimary = styled(ScButtonBase)`
${mixinButtonPrimary}
`;
const ScMixinButtonSecondary = styled(ScButtonBase)`
${mixinButtonSecondary}
`;
const ScMixinButtonSecondaryAlt = styled(ScButtonBase)`
${mixinButtonSecondaryAlt}
`;
const ScMixinButtonTertiary = styled(ScButtonBase)`
${mixinButtonTertiary}
`;
const ScMixinButtonTertiaryAlt = styled(ScButtonBase)`
${mixinButtonTertiaryAlt}
`;
const ScMixinButtonBrandPrimary = styled(ScButtonBase)`
${mixinButtonBrandPrimary}
`;
const ScMixinButtonBrandSecondary = styled(ScButtonBase)`
${mixinButtonBrandSecondary}
`;
const ScMixinButtonBrandSecondaryAlt = styled(ScButtonBase)`
${mixinButtonBrandSecondaryAlt}
`;
const ScMixinButtonBrandTertiary = styled(ScButtonBase)`
${mixinButtonBrandTertiary}
`;
const ScMixinButtonTextPrimary = styled(ScButtonBaseText)`
${mixinButtonTextPrimary};
`;
const ScMixinButtonTextSecondary = styled(ScButtonBaseText)`
${mixinButtonTextSecondary};
`;
const ScMixinButtonTextTertiary = styled(ScButtonBaseText)`
${mixinButtonTextTertiary};
`;
const ScMixinButtonTextBrandPrimary = styled(ScButtonBaseText)`
${mixinButtonTextBrandPrimary}
`;
const ScMixinButtonTextBrandSecondary = styled(ScButtonBaseText)`
${mixinButtonTextBrandSecondary}
`;
export default function MixinButton(): JSX.Element {
const [stateDisabled, setStateDisabled] = useState<boolean>(false);
const handleToggleDisabled = useCallback(() => setStateDisabled(!stateDisabled), [stateDisabled, setStateDisabled]);
return <>
<Button onClick={handleToggleDisabled}>toggle disabled - {`${stateDisabled}`}</Button>
<div>
<ScMixinButtonSizeXs disabled={stateDisabled}>size-xs size + shadow</ScMixinButtonSizeXs>
<ScMixinButtonSizeS disabled={stateDisabled}>size-s size + shadow</ScMixinButtonSizeS>
<ScMixinButtonSizeM disabled={stateDisabled}>size-m size + shadow</ScMixinButtonSizeM>
<ScMixinButtonSizeL disabled={stateDisabled}>size-l size + shadow</ScMixinButtonSizeL>
<ScMixinButtonSizeXl disabled={stateDisabled}>size-xl size + shadow</ScMixinButtonSizeXl>
</div>
<div>
<ScMixinButtonDanger disabled={stateDisabled}>danger</ScMixinButtonDanger>
<ScMixinButtonMenu disabled={stateDisabled}>menu</ScMixinButtonMenu>
</div>
<div>
<ScMixinButtonPrimary disabled={stateDisabled}>primary</ScMixinButtonPrimary>
<ScMixinButtonSecondary disabled={stateDisabled}>secondary</ScMixinButtonSecondary>
<ScMixinButtonSecondaryAlt disabled={stateDisabled}>secondary:alt</ScMixinButtonSecondaryAlt>
<ScMixinButtonTertiary disabled={stateDisabled}>tertiary</ScMixinButtonTertiary>
<ScMixinButtonTertiaryAlt disabled={stateDisabled}>tertiary:alt</ScMixinButtonTertiaryAlt>
</div>
<div>
<ScMixinButtonBrandPrimary disabled={stateDisabled}>brand-primary</ScMixinButtonBrandPrimary>
<ScMixinButtonBrandSecondary disabled={stateDisabled}>brand-secondary</ScMixinButtonBrandSecondary>
<ScMixinButtonBrandSecondaryAlt disabled={stateDisabled}>brand-secondary:alt</ScMixinButtonBrandSecondaryAlt>
<ScMixinButtonBrandTertiary disabled={stateDisabled}>brand-tertiary</ScMixinButtonBrandTertiary>
</div>
<div>
<ScMixinButtonTextPrimary disabled={stateDisabled}>text-primary</ScMixinButtonTextPrimary>
<ScMixinButtonTextSecondary disabled={stateDisabled}>text-secondary</ScMixinButtonTextSecondary>
<ScMixinButtonTextTertiary disabled={stateDisabled}>text-tertiary</ScMixinButtonTextTertiary>
<ScMixinButtonTextBrandPrimary disabled={stateDisabled}>text-brand-primary</ScMixinButtonTextBrandPrimary>
<ScMixinButtonTextBrandSecondary disabled={stateDisabled}>text-brand-secondary</ScMixinButtonTextBrandSecondary>
</div>
</>;
}